ResearchZosho
OCI · GHCR.IO/WYRDSEKAI/RESEARCHZOSHO · 2 COMPONENTS
Deep research assistant that checks its citations against the sources and keeps what it found.
Available components
Last scanned (9 hours ago)
Scores higher than 71% of OCI servers
Category Education and Research
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 3 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability61
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 14073 tokens (~287/item across 49 items; 49 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "library_remove" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 49 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities20
- Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- Package version: 0.6.1 → 0.6.8 functional
- 1 Nov 26 0
- Tool safety: pass → unverified ▼ security
- Stability: pass → unverified ▼ security
- Capabilities: fail → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 0.6.6 → 0.6.8 functional
- Package version: 0.6.6 → 0.6.7 functional
- 31 Oct 26 +1
- Security disclosure: unverified → pass ▲ functional
- 30 Oct 26 −1
- Security disclosure: pass → unverified ▼ functional
- 28 Oct 26 +1
- Stability: 0.97 → pass security
- 27 Oct 26 0
- Provenance: unverified → fail ▼ security
- Package version: 0.6.5 → 0.6.6 functional
- 26 Oct 26 +1
- Provenance: fail → unverified ▼ security
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed oci/ghcr.io/wyrdsekai/researchzosho@0.6.8
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
library_absorb ~607
Absorb a conversation the person had with another assistant (ChatGPT, Claude, any chat) as a starting point for research. Give a path (a saved transcript or an export such as conversations.json), a url, or the pasted text. The transcript is shelved as it is; the person's questions join the open questions; the claims the assistant made come back as a list to check and are filed as nothing, since an assistant's say-so is not a source. verify=true files one research run that checks those claims against sources. An export with many conversations takes the first `limit` (default 25) and reports how many remain. Paths from the keeper only (the terminal, the pages).
| Name | Type | Req | Description |
|---|---|---|---|
| allow | array | – | Optional: what to let into this run that the library leaves out by default, for this run only: "explicit" (pornography, and gore) and "howto" (step-by-step instructions for making a weapon or an expl… |
| collection | string | – | Where the transcript is shelved (default conversations). |
| field | string | – | Optional, with verify=true: the field the checking run is to be, one of the library's fields by name. |
| limit | integer | – | How many conversations of an export to take (default 25). |
| locale | string | – | Optional: the person's language and country as a language tag, such as en-US, es-MX or ja-JP. When a question reads as a person asking about harming themselves, where to find help comes in that langu… |
| path | string | – | A transcript or export file on this machine (absolute path). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| text | string | – | The conversation itself, pasted. |
| title | string | – | A title for the thread (default: the file name or the export's own title). |
| url | string | – | A shared conversation page or an export on the web. |
| verify | boolean | – | File one research run that checks the assistant's claims. |
No output schema declared.
No examples provided.
library_access ~90
What became of an access request: pending, denied (with the reason), or approved, in which case the token, once, when the claim secret is right.
| Name | Type | Req | Description |
|---|---|---|---|
| claim | string | yes | The claim secret it returned. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| request_id | string | yes | The id library_request_access returned. |
No output schema declared.
No examples provided.
library_add ~312
Read material into the library: a file, a folder (a mounted network share is a folder), or a url. mode=keep (default) copies the extracted text onto the shelves; the file itself is never copied. mode=link reads the files where they are and keeps only a pointer and a hash: nothing is copied, and if the drive is not mounted the library says so when it reads. mode=survey counts a folder and says what keeping it would take (files, text size, free disk) without shelving anything. For a folder, survey first, then ask keep or link, unless the person has already said. Paths are only accepted from the keeper (the terminal, the pages); a url from any patron with write access. No model runs; to ask a question of what was added, library_research with sources=shelves and the collection.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | – | The collection to shelve under (default: the folder's name; none for a single file or url). |
| mode | string | – | keep | link | survey (default keep). |
| path | string | – | A file or a folder on this machine (absolute path; a mounted share is a path). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| register | boolean | – | For a folder: the housekeeping rescans it for new and changed files. |
| url | string | – | A page or document on the web; always kept. |
No output schema declared.
No examples provided.
library_ask ~176
Ask The Librarian — the long-term research library. Returns the answer PACKAGE: full relevant entries (findings, shelf articles, captured documents) with states, claim types, sources and disputes, open frontier threads, and holds_nothing=true with NO entries when the library has nothing. Reviewed background: it never overrides direct evidence you gather yourself.
| Name | Type | Req | Description |
|---|---|---|---|
| k | integer | – | Optional max entries (default 6). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| peers | string | – | Optional: also ask other libraries — a peer's name, a group, or all; none = only this one. Their answers come back under peers[], each labelled with its library, never merged. |
| question | string | yes | What you want the library's holdings on. |
No output schema declared.
No examples provided.
library_bookmarks ~214
A browser's bookmarks as a starting point: the exported bookmarks file, Chrome's Bookmarks JSON, or lines of urls. Each page is fetched onto the shelves as a collection (folder=… takes one folder); one that cannot be read becomes a source request. watch=true has the housekeeping re-read the pages and keep a new copy when one changes. Paths from the keeper only.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | – | The collection (default bookmarks, or the folder's name). |
| folder | string | – | Only the bookmarks in this folder. |
| limit | integer | – | How many to take (default all, up to 200). |
| path | string | – | The bookmarks file on this machine (absolute path). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| text | string | – | The urls, pasted, one per line. |
| url | string | – | The list on the web. |
| watch | boolean | – | Re-read the pages nightly. |
No output schema declared.
No examples provided.
library_bridges ~593
Discovery by combination: two areas of the library that no source read together, joined by specific terms both areas' claims share (Swanson's fish oil and Raynaud's). op=run computes the candidate pairs from an area (or the hottest ones) and files up to a few proposals as open questions of type bridge; dry=true only shows the pairs. op=list the open proposals; op=accept files the research run that tests one (its verified claims are the test); op=dismiss drops it; op=settings reads or sets an area's dials (sources, reach, strict, toward, away, since, per_night); op=measure reads the ledger: proposed, kept, dismissed, corroborated.
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | – | For run and settings: the subject to start from (default: the hottest areas); for distance: one of the two areas. |
| away | string | – | For run and settings: words that rule an area out, comma-separated. |
| dry | boolean | – | For run: show the pairs and questions, file nothing. |
| op | string | – | run | list | accept | dismiss | settings | measure | distance (default list). |
| other | string | – | For distance: the other area — returns hops on the map, shared terms, paths, sources naming both, and the nearest concepts by embedding with their cosine. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| per_night | integer | – | For settings: proposals a night for the crew (0 turns it off). |
| propose | integer | – | For run: proposals to file this time (default the area's per_night, 3). |
| question | string | – | For accept and dismiss: the proposal, as listed. |
| reach | string | – | For run and settings: low (neighbours) | medium (a few hops, a tenth random) | high (any distance, a third random). |
| since | string | – | For run and settings: only areas with a finding dated on or after this (YYYY-MM-DD). |
| sources | string | – | For run and settings: library, peers, web — comma-separated (default library). With web, a pair the shelves do not join is taken outside: the model names what could bear on both, and a web search has… |
| strict | boolean | – | For run and settings: three shared terms and no source naming both (true, default), or one term and no claim joining them (false). |
| toward | string | – | For run and settings: measure distance toward this area instead of outward. |
| via | string | – | For run and settings: terms (words both areas' claims are about) | graph (paths on the map through concepts in between) | both (default). |
No output schema declared.
No examples provided.
library_changes ~117
Recall notices: everything that happened to findings and investigations after a cursor — added, state changes (retired, disputed, accepted), edits, supersessions. Re-check what you cited with one call. Pass the previous next_cursor as since; 0 = from the beginning.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max changes per page (default 200). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| since | string | – | Cursor from the previous call (default 0). |
No output schema declared.
No examples provided.
library_check ~564
Check the person's own draft — a memo, a chapter, notes (text, markdown, Word, PDF) — as a starting point. One voice: its definite statements come back as claims to check, its questions join the open questions, and the citations it carries (urls, DOIs, arXiv ids) are fetched onto the shelves; one that cannot be read becomes a source request. Nothing becomes a finding. verify=true files one research run that checks the claims against sources, the draft's own citations included. Paths from the keeper only.
| Name | Type | Req | Description |
|---|---|---|---|
| allow | array | – | Optional: what to let into this run that the library leaves out by default, for this run only: "explicit" (pornography, and gore) and "howto" (step-by-step instructions for making a weapon or an expl… |
| collection | string | – | Where the draft and its citations are shelved (default drafts). |
| fetch_citations | boolean | – | Fetch the citations onto the shelves (default true). |
| field | string | – | Optional, with verify=true: the field the checking run is to be, one of the library's fields by name. |
| locale | string | – | Optional: the person's language and country as a language tag, such as en-US, es-MX or ja-JP. When a question reads as a person asking about harming themselves, where to find help comes in that langu… |
| path | string | – | The draft on this machine (absolute path). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| text | string | – | The draft itself, pasted. |
| title | string | – | A title (default: the document's own, or the file name). |
| url | string | – | The draft on the web. |
| verify | boolean | – | File one research run that checks the claims. |
No output schema declared.
No examples provided.
library_db ~294
The databases the library owner gave read access to (SQLite, PostgreSQL, MySQL or MariaDB, SQL Server, MongoDB, DuckDB and data files). op=list names them. op=schema with `database` gives tables, columns, row counts and sample rows: read it before writing a query. op=query runs ONE reading statement: `sql` (a single SELECT or WITH), or for MongoDB a `collection` with a `filter` or a `pipeline` as JSON. Rows are capped, so count and group in the query. The result is saved as a page; cite its locator. Only the owner may use this, and connections are added from the command line.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | – | For a MongoDB query: the collection. |
| database | string | – | The database's name, from op=list. |
| filter | string | – | For a MongoDB query: a find filter as JSON. |
| limit | integer | – | Rows to return (default 100, at most 500). |
| op | string | – | list (default), schema, or query. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| pipeline | string | – | For a MongoDB query: an aggregation pipeline as a JSON array. Only stages that read. |
| sql | string | – | For query: one SELECT or WITH statement. |
No output schema declared.
No examples provided.
library_dna ~318
The DNA store beyond the shelf. op=status: how many documents and how many labelled, per kind, and whether the person shares. op=pack-export (the owner) with path writes a pack of the labelled documents (the shared pool's format: the works' layers and provenance, nothing of the person); op=pack-import (the owner) with path reads one in; op=pack-refresh fetches the pack researchzosho.org announces, when there is one. op=podcast-like with words: the podcast episodes like one, among the transcripts the library holds, the same show set aside; op=podcast-read (the owner) reads the transcripts for their DNA now.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | book (default) | podcast. |
| limit | integer | – | How many rows (podcast-like; default 10). |
| minutes | integer | – | How long to read (podcast-read; default 5) or to fill records (records; default 2). |
| op | string | – | status (default) | pack-export | pack-import | pack-refresh | records (the owner: the catalogue's subjects, editions and ratings joined to the shelf's documents now, the labelled first) | podcast-lik… |
| path | string | – | The pack file to write or read. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| words | string | – | Words of the episode's show or title (podcast-like). |
No output schema declared.
No examples provided.
library_dossier ~413
Everything the library holds on a person or an organisation, as one document: the relations the graph has, the claims by the class of their source (public record, own publication, told, supplied, third-party), a timeline, what was told in conversation, the reports to dive into, the open questions, what was looked for and not found, and the subjects it links to. A view over the shelves, written fresh each time; a research run adds to it.
| Name | Type | Req | Description |
|---|---|---|---|
| every | integer | – | For watch: the days between searches (default 7). |
| id | string | – | For score: the forecast's id, P-…. |
| note | string | – | For score: what settled it, in a sentence. |
| op | string | – | read (default): the dossier. list: every dossier the shelves hold, with its kind, counts, last run and whether a story is written. story: write the story of the subject as a report, chapter by chapte… |
| outcome | string | – | For score: happened, did-not or void. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| subject | string | – | The person or the organisation, by name; leave it out to list the dossiers the shelves hold. |
No output schema declared.
No examples provided.
library_established ~86
What the shelves hold on a claim: accepted entries bearing on it, open disputes touching it, and a verdict computed from their states — established | disputed | not_established. No model composes it.
| Name | Type | Req | Description |
|---|---|---|---|
| claim | string | yes | The claim, as a sentence. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_explain ~306
A READING AID, never a record. id + rung re-explains an entry for a reader at that rung: beginner (new to the field), familiar (knows the field but not this work) or written (the sources' own register). term (+ in, the entry it appears in) explains a term as it is used there. Shelves only: written from the entry, its findings and its captured sources; every paragraph is read back against what it cites and marked when the shelves do not support it. grounding is shelves | thin | none; when none, offer carries the library_research call that would fill the gap — pass it as it is (quick: true runs it now, ahead of the night's work), then call library_explain again. terms[] are words the reader may need next; each is a further library_explain. Needs a model drive the first time; cached after.
| Name | Type | Req | Description |
|---|---|---|---|
| fresh | boolean | – | Regenerate instead of using the cached reading. |
| id | string | – | The entry to explain (F-…, I-…, A-…). |
| in | string | – | The entry id a term appears in. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| rung | string | – | beginner (default) | familiar | written. |
| term | string | – | A term to explain instead; with in, as it is used in that entry. |
No output schema declared.
No examples provided.
library_frontier ~535
The queue of open questions the housekeeping's explorer researches a few of each night — op=list returns them in queue order with type, parked, position, tonight, the report that left each (report, report_title, report_fate: kept | waiting | disputed | retired | none), perspective, subjects, language, and similar (the head of a group that reads alike); list takes filters: type, show (queued | parked | all, default all), report (an id or its prefix), fate, who (perspective text), subject, language, q (words); hints=true adds answered {id, title, state} where a claim on the shelves already answers a question. op=add queues one attributed to the patron; op=next moves one to the head; op=later to the tail; op=park keeps one out of the explorer's reach, with why (the reason, listed back as parked_why with the date); op=unpark returns it; op=drop closes one without researching it; op=tidy removes duplicate lines (write access). A report's leftover questions are filed parked.
| Name | Type | Req | Description |
|---|---|---|---|
| fate | string | – | For list: kept | waiting | disputed | retired | none — what became of the report that left the question. |
| hints | boolean | – | For list: look each question up on the shelves and add answered when a claim already answers it. |
| language | string | – | For list: english, japanese, … — the language a question is in or asks for. |
| op | string | – | list (default) | add | next | later | park | unpark | drop | tidy. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| q | string | – | For list: words that must all appear in the question. |
| question | string | – | For add, next, later, park, unpark, drop: the question, exactly as listed. |
| report | string | – | For list: only questions left by this investigation (an id, or its prefix such as I-0016). |
| show | string | – | For list: queued | parked | all (default all). |
| subject | string | – | For list: a subject slug. |
| type | string | – | For list: report | asked | person | dispute | check. |
| who | string | – | For list: the perspective the question was asked from, matched as text. |
| why | string | – | For park: why it waits, for example: waits on the record office's answer. |
No output schema declared.
No examples provided.
library_get ~268
One entry in full by id: body, every source with locator and edition, supersedes / superseded_by, subjects, related entries, and the review record {round, reviewer, decision, stale}. An investigation also carries sections[] {heading, chars}, sources[] as rows {n, locator, title, edition, published, fetched, language, same_as}, claims[] (its findings with bodies) and open_questions[]. A write-up can run past what one call may carry: pass section (a heading; "answer" = the write-up without the harness's sections; "workers", "references", "evidence") to get one section, and offset / max_chars for a window of the body.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | F-… finding, I-… investigation, A-… article, or a raw file name. |
| max_chars | integer | – | Optional: at most this many characters of the body; chars and truncated say what was left. |
| offset | integer | – | Optional: start of the body window, in characters. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| section | string | – | Optional: one section by heading, or "answer" for the write-up alone. |
No output schema declared.
No examples provided.
library_help ~174
The library on ITSELF: what ResearchZosho is, which version is running, what it can and cannot do, how to do something in it, and why something does not work. Returns its live state (version, what this library holds, the model and whether it answers, the web search, the fields that are on, the chat's commands, the pages) and the sections of the program's own documentation that answer the question, with where to ask what neither answers. Use it for any question about the library or the program rather than answering from memory.
| Name | Type | Req | Description |
|---|---|---|---|
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| question | string | – | What the person wants to know about ResearchZosho, in English words; empty for the state alone. |
No output schema declared.
No examples provided.
library_holdings ~150
What the person's own lists hold: a Calibre library, an inventory, a reading list — every list shelved through library_items. An exact lookup: every word of the query must appear in an entry (title words, an author, a year). Ask it for each candidate to tell owned from not owned; a search snippet is a guess, this is not.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Matches to return (default 20, up to 100). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| query | string | yes | Words of a title, an author, a year: "wizard earthsea le guin". |
No output schema declared.
No examples provided.
library_inbox ~418
The claims waiting for the keeper's decision — drafts, and accepted claims whose review went stale — and the decisions. op=list returns items[] {id, title, state, stale, kind, tier, confidence, writer, date, subjects, language, sources, report, report_title}, oldest first, with filters report (an investigation id or its prefix), subject, kind (extraction | synthesis | interpretation | speculation), tier, confidence, writer, state (draft | stale), language, q (words in the title). op=accept puts claims into every answer from now on; op=dispute files why; op=retire keeps them on disk and out of every answer — each takes ids[] (or id), or report for every waiting claim of one investigation (write access).
| Name | Type | Req | Description |
|---|---|---|---|
| confidence | string | – | For list: low | medium | high. |
| id | string | – | One claim id, instead of ids. |
| ids | array | – | For accept, dispute, retire: the claim ids. |
| kind | string | – | For list: the claim type — extraction | synthesis | interpretation | speculation. |
| language | string | – | For list: the language of the claim's title. |
| op | string | – | list (default) | accept | dispute | retire. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| q | string | – | For list: words that must all appear in the title. |
| report | string | – | For list: only claims from this investigation; for a decision: every waiting claim of it. |
| state | string | – | For list: draft | stale. |
| subject | string | – | For list: a subject slug. |
| tier | string | – | For list: the strongest source's tier. |
| why | string | – | For dispute: the reason (required). |
| writer | string | – | For list: who wrote the claim, matched as text (crew:explorer, person, …). |
No output schema declared.
No examples provided.
library_items ~803
A list of things — books, tools, places, an inventory of line items — as a starting point for research. Give a path (one item per line, a markdown table, or a CSV), a url, or the list as text. The list is shelved as it is so the library knows what the person has; each item is checked against the shelves (held or not); then, through the lens ("{item}: what it is, who made or wrote it, what it is for, and what is known about it" unless the person says what they want to know), as=frontier (default) files a question per item on the open questions, as=runs sends them out as research runs with a lane per item (batches of 8), as=none only reports what is held. Paths from the keeper only.
| Name | Type | Req | Description |
|---|---|---|---|
| allow | array | – | Optional: what to let into this run that the library leaves out by default, for this run only: "explicit" (pornography, and gore) and "howto" (step-by-step instructions for making a weapon or an expl… |
| as | string | – | frontier | runs | none (default frontier). |
| collection | string | – | Where the list is shelved (default lists). |
| column | string | – | For a CSV: the column that holds the items (default: a column named title, name, item or book, else the first). |
| field | string | – | Optional, with as=runs: the field every run is to be, one of the library's fields by name. |
| lens | string | – | What to find out about each item; {item} marks where the item goes (default: what it is, who made it, what it is for). |
| limit | integer | – | How many of the selected items to look at, file or run in this call (default 200, the most). The whole list is shelved regardless. |
| locale | string | – | Optional: the person's language and country as a language tag, such as en-US, es-MX or ja-JP. When a question reads as a person asking about harming themselves, where to find help comes in that langu… |
| match | string | – | Only items whose line holds this text (a tag, an author, a year); an array for several, all must hold. |
| path | string | – | A list file on this machine (absolute path): one item per line, a markdown table, or a CSV (a header with a title column picks that column). A Calibre library folder gives its books, each with author… |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| sample | integer | – | Of the matched items, this many at random. |
| text | string | – | The list itself, pasted. |
| title | string | – | A name for the list (default: the file name). |
| url | string | – | A list on the web. |
No output schema declared.
No examples provided.
library_job ~169
One job from the ledger ({job}: state queued|running|done|failed|stopped, elapsed_s, result when finished), or your jobs (active[], finished[], paused) when job_id is omitted. op=stop {job_id} stops one run: queued, it never starts; running, it ends at its next turn. op=pause holds the runner (queued runs wait, a running one holds at its next turn); op=resume lets it go (write access).
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | – | The job to read or stop, e.g. J-0007. |
| op | string | – | read (default) | stop | pause | resume. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_map ~179
The GRAPH around a focus: a person, place, event, document, organisation, work or concept by name, or an entry id. Returns the neighbourhood — nodes {id, kind, label, also[], wikidata} and edges, where every edge IS a finding {from, predicate, to, finding, state, confidence, disputed} — plus the open questions touching it. This is how a family shelf and a computer-science shelf meet at one person.
| Name | Type | Req | Description |
|---|---|---|---|
| depth | integer | – | Hops from the focus (default 1, max 3). |
| focus | string | yes | A node name (any language, any alias) or an entry id. |
| k | integer | – | Max nodes (default 25). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_meeting ~507
A meeting transcript as a starting point: WebVTT (Zoom, Teams, Otter) or "Name: words" lines. The transcript goes on the shelves with its decisions; the questions raised join the open questions; the claims made come back to check, with who said them. Nothing becomes a finding. verify=true files one research run that checks the claims. Paths from the keeper only.
| Name | Type | Req | Description |
|---|---|---|---|
| allow | array | – | Optional: what to let into this run that the library leaves out by default, for this run only: "explicit" (pornography, and gore) and "howto" (step-by-step instructions for making a weapon or an expl… |
| collection | string | – | Where it is shelved (default meetings). |
| field | string | – | Optional, with verify=true: the field the checking run is to be, one of the library's fields by name. |
| locale | string | – | Optional: the person's language and country as a language tag, such as en-US, es-MX or ja-JP. When a question reads as a person asking about harming themselves, where to find help comes in that langu… |
| path | string | – | The transcript on this machine (absolute path). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| text | string | – | The transcript, pasted. |
| title | string | – | The meeting's name (default: the file name). |
| url | string | – | The transcript on the web. |
| verify | boolean | – | File one research run that checks the claims. |
No output schema declared.
No examples provided.
library_models ~353
The models this library can run on, by name: list them; add one (a name, a host address or word — anthropic, openai, openrouter, gemini, nebius, huggingface — a model id, prices per million tokens as in/out/cache, an effort, a monthly cap in dollars); remove one; keep a host's key. A key is never returned. Write access.
| Name | Type | Req | Description |
|---|---|---|---|
| cap | string | – | With add, optional: dollars a month; a run that would start past it is refused. |
| drive | string | – | With add: the host's address, or a word: anthropic, openai, openrouter, gemini, nebius, huggingface. |
| effort | string | – | With add, optional: the reasoning effort the host takes (low, medium, high …). |
| host | string | – | With key: the host (openrouter.ai) or its word. |
| model | string | – | With add: the model id on that host. |
| name | string | – | With add or remove: the entry's name — letters, digits and hyphens. |
| note | string | – | With add, optional: a note shown beside the entry. |
| op | string | – | list (default) | add | remove | key |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| prices | string | – | With add, optional: dollars per million tokens as in/out or in/out/cache, for example 0.024/0.72/0.005. |
| value | string | – | With key: the key; blank forgets it. |
No output schema declared.
No examples provided.
library_my_shelf ~583
The person's own shelf: their Calibre library (the calibre setting), the podcasts they follow, what they bought. op=profile: what they went for — the books they added one by one (a day of fifty or more additions is an import: holdings, not taste) and any they rated themselves — the subject mix among the liked books with its tilt against the whole shelf, the authors rated well more than once, decades, languages, sample titles, podcasts followed, shops bought from; an imported rating is set aside. op=have with title (and author): whether a book is already on the shelf, in the purchase ledger or on a holdings list. op=liked with words: the rated books on a subject or by an author, best first. op=dna with title: a shelf book's DNA — the text counted (length, sentences, dialogue, reading grade, the feeling's arc) and the model's reading of it over twelve windows (kind, themes, moods against an ordinary book of its kind, pace, darkness, scale, humour, style, drive, topics), made now when missing; without a title (the owner) the night's reading of the shelf runs now.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | The author, to tell books of one title apart (have). |
| limit | integer | – | How many books (liked; default 20, up to 60; like: default 10, up to 40). |
| minutes | integer | – | With op=refresh: how long to spend (default 2, up to 30); with op=dna and no title: minutes to read the shelf (default 20). |
| op | string | – | profile (default) | have | liked | refresh (the owner: the catalogues of the authors rated well read now, for the what-next pool) | dna (a book's DNA; the owner without a title: the shelf read now) |… |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| stars | number | – | liked: only the books the person rated at least this themselves; left out, every book they went for. |
| title | string | – | The book's title, or an ISBN (have). |
| words | string | – | A subject, a tag, an author or title words (liked). |
No output schema declared.
No examples provided.
library_owned ~454
What the person owns: their purchases, imported from their own records (the zip Amazon's data request returns, a mailbox of order confirmations, a bank or card statement as CSV). op=status says what the ledger holds and where each file's records begin; op=find with words (and year, shop) looks something up: what was bought, when, where, for how much; op=import with path reads a file on this machine (the owner only); op=forget with file drops what one file added. The ledger is a reference, never a requirement.
| Name | Type | Req | Description |
|---|---|---|---|
| check | boolean | – | With op=recalls: read the safety feeds now instead of waiting for the night (write). |
| currency | string | – | The currency to assume when a record has none, such as USD or JPY (import). |
| file | string | – | The imported file to forget, as op=status lists it (forget). |
| hit | string | – | With op=recalls: the id of a hit to put away as not yours or dealt with (write). |
| kind | string | – | amazon (the zip a data request returns) | mail (a mailbox file or folder, or .eml files) | bank (a statement as CSV) | google (Takeout's Play Store orders) | apple (the store transaction history from… |
| limit | integer | – | How many lines (default 50, up to 500). |
| op | string | – | status (default) | find | list | import | recalls (the recall notices that may concern what is owned; check=true reads the feeds now, hit=<id> puts one away) | forget. |
| path | string | – | The file or folder to read (import). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| shop | string | – | A shop's name or part of it (find, list). |
| words | string | – | Words the thing's name, shop or order number carry (find). |
| year | string | – | A year, such as 2019 (find, list). |
No output schema declared.
No examples provided.
library_perspectives ~115
Before researching: WHO studies this question and what would each of them insist on asking (STORM's move). Returns perspectives [{perspective, why, questions[]}] and sub_questions[] ready to pass to library_research. One or two searches and one judge call; needs a model drive.
| Name | Type | Req | Description |
|---|---|---|---|
| max | integer | – | Max perspectives (default 5). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| question | string | yes | The research question. |
No output schema declared.
No examples provided.
library_prefs ~304
The person's preferences file for books: what they want more and less of, each line with its source (drafted from the shelf, learned from the reactions, or said by the person). op=show (default) the lines; op=draft (the owner) writes one from the shelf; op=set with name and value changes a line (weight.subject 2 | roam 0.4 | popularity one|none|known | words "…" | exclude.author|subject|kind|series <value> | prefer.mood|subject|kind|pace|author <value> | avoid.<the same> <value>); op=unset drops one; op=export and op=import with path carry the file; op=learn reads the reactions into it. "Like X" and browsing read it. A program sets a line only when the person said so in this conversation.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | The line to set or unset, e.g. prefer.mood, exclude.author, weight.subject, roam, popularity, words. |
| op | string | – | show (default) | draft | set | unset | export | import | learn. |
| path | string | – | The file to write or read (export, import). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| value | string | – | Its value (set); the value to drop (unset, optional). |
No output schema declared.
No examples provided.
library_questions ~504
A list of questions — a syllabus, an exam, what the person needs answered — onto the open questions in order (as=frontier, the default; the housekeeping's explorer works through them at night), or as research runs one each up to 10 (as=runs; the rest are filed as open questions). One question per line. Paths from the keeper only.
| Name | Type | Req | Description |
|---|---|---|---|
| allow | array | – | Optional: what to let into this run that the library leaves out by default, for this run only: "explicit" (pornography, and gore) and "howto" (step-by-step instructions for making a weapon or an expl… |
| as | string | – | frontier | runs (default frontier). |
| field | string | – | Optional, with as=runs: the field every run is to be, one of the library's fields by name. |
| limit | integer | – | How many questions to take (default all, up to 200). |
| locale | string | – | Optional: the person's language and country as a language tag, such as en-US, es-MX or ja-JP. When a question reads as a person asking about harming themselves, where to find help comes in that langu… |
| path | string | – | The file on this machine (absolute path). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| text | string | – | The questions, pasted, one per line. |
| title | string | – | A name for the list. |
| url | string | – | The list on the web. |
No output schema declared.
No examples provided.
library_react ~178
Writes the person's reaction to a book down: like, dislike, seen or own, by title (and author); about=<title> when the book was a row of a "like" list for that title. A disliked book leaves later lists, a seen or owned one is marked, and the preferences file learns from the likes and dislikes. The owner, and only when the person said so in this conversation.
| Name | Type | Req | Description |
|---|---|---|---|
| about | string | – | The X whose "like" list the book was on, by title. |
| author | string | – | Its author, to tell books of one title apart. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| reaction | string | yes | like | dislike | seen | own. |
| title | string | yes | The book's title. |
No output schema declared.
No examples provided.
library_read ~106
The captured raw text behind a source locator — the verbatim path: read the evidence, not only the claim. Returns title, edition, captured_at and the text (truncated at max_chars).
| Name | Type | Req | Description |
|---|---|---|---|
| locator | string | yes | The source URL as cited, or raw/<file>. |
| max_chars | integer | – | Optional cap on the text (default 20000). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_reading ~265
A reading list as a starting point: BibTeX, RIS (Zotero, EndNote), a CSV export, or lines of DOIs, urls and titles. Every entry with a locator is fetched onto the shelves as a collection; one that cannot be read becomes a source request; an entry with a title only is listed so the person can give it a locator or research it by name (library_items). watch=true has the housekeeping re-read the pages. Then library_research with sources=shelves and the collection reads from them. Paths from the keeper only.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | – | The collection the entries are shelved in (default: from the title). |
| limit | integer | – | How many entries to take (default all, up to 200). |
| path | string | – | The list on this machine (absolute path). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| text | string | – | The list itself, pasted. |
| title | string | – | A name for the list (default: the file name). |
| url | string | – | The list on the web. |
| watch | boolean | – | Re-read the pages nightly and keep a new copy when one changes. |
No output schema declared.
No examples provided.
library_remove ~201
Take a report or a claim out of the library for good. id is a report (I-…) or a claim (F-…). For a report, what=all (default) removes it and the claims that are its alone, what=report the report only, what=claims its claims only; a claim another report also cites stays and is named. dry=true shows the plan and removes nothing. Files are deleted, the index and the changes log updated; what the run fetched from the web stays. There is no undo — retire is the gentler thing for a claim.
| Name | Type | Req | Description |
|---|---|---|---|
| dry | boolean | – | Show the plan only. |
| id | string | yes | A report id (I-…) or a claim id (F-…). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| what | string | – | For a report: all (default), report, or claims. |
No output schema declared.
No examples provided.
library_request_access ~113
Ask to be let into this library. No access is needed to ask. Returns a request id and a claim secret (shown once); the owner approves or denies; collect the outcome with library_access.
| Name | Type | Req | Description |
|---|---|---|---|
| did | string | yes | Who is asking, as a did. |
| name | string | – | A name the owner will recognise. |
| note | string | – | Why, in a sentence or two. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_research ~940
A RESEARCH RUN: send a question to The Librarian's workers. The library's own runner plans sub-questions (yours, if you pass them), researches each in parallel with web search + fetch noting every fact with its source, has a critic decide on a second round, and writes the investigation in sections; the result enters the library as a draft investigation attributed to you and the review crew extracts findings from it. Returns a job_id to poll with library_job. Write access. Takes minutes to hours — do not wait inline. A field that acts only when asked for, such as family history, joins the run only when field names it; a question that looks like one of its questions is researched as ordinary research, and the result then carries suggestion {field, why, how}: what the field's mode does and how to ask for it.
| Name | Type | Req | Description |
|---|---|---|---|
| allow | array | – | Optional: what to let into this run that the library leaves out by default, for this run only: "explicit" (pornography, and gore) and "howto" (step-by-step instructions for making a weapon or an expl… |
| collections | array | – | Optional: names of the person's collections (folders shelved with `researchzosho add <dir>`) to search. |
| field | string | – | Optional: the field the run is to be, one of the library's fields by name (researchzosho profile list shows them). An unknown or switched-off field is refused with a sentence saying which fields ther… |
| locale | string | – | Optional: the person's language and country as a language tag, such as en-US, es-MX or ja-JP. When a question reads as a person asking about harming themselves, where to find help comes in that langu… |
| max_minutes | integer | – | Optional ceiling: the most wall-clock minutes the run may take ('two hours tops' = 120). The workers stop early enough for the write-up to fit. Absent or 0 = no ceiling. |
| max_turns | integer | – | Optional ceiling: the most model turns the WHOLE run may spend (workers, critic, synthesis and cite-check together). Absent or 0 = no ceiling, the run goes until the work is done. |
| mode | string | – | broad (survey the landscape, default) | depth (deep-read a narrow question). |
| model | string | – | Optional: the named model to run on, one of the library's model entries by name (library_models op=list names them), or auto for best judgement, which is the default when more than one is named. Each… |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| question | string | yes | The research question, as you would put it to a librarian. |
| quick | boolean | – | Look it up now: the front of the line and short ceilings (12 turns, 6 minutes) unless the ask names its own. |
| seek | string | – | Optional: a seek group's name (letters, digits, dashes). The run reads and writes its own copy of the shelves under that name, so several seeks of one question never see each other's work; library_se… |
| sources | string | – | both (the shelves first, then the web — default) | shelves (the person's own corpus only, no web) | web. |
| sub_questions | array | – | Optional plan: up to 8 self-contained sub-questions, each researched by its own worker instead of a decompose step. |
No output schema declared.
No examples provided.
library_search ~136
Search The Librarian's catalog (hybrid BM25 + dense, CJK-aware). Returns hits {id, kind, title, snippet, score, state, subjects[]} and next_cursor; use library_get for one entry in full.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Optional: next_cursor from the previous page. |
| k | integer | – | Optional page size (default 10). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| query | string | yes | Search terms (any language). |
| subject | string | – | Optional: restrict to entries carrying this subject slug. |
No output schema declared.
No examples provided.
library_seeks ~220
Seeks: the same question researched several times apart (library_research with seek=<group>, each on its own copy of the shelves, on any model), and one report merged from them. op=list the groups and their seeks; op=read a seek's report (group, job_id) or the merged one (group); op=merge files the merge run: the judge reads the seeks' claims in pairs, agreed claims are filed as findings, contradictions as disputed findings with the question on the frontier, what only one seek found is listed; op=drop removes a group's seeks and their shelves (the merged report stays).
| Name | Type | Req | Description |
|---|---|---|---|
| group | string | – | The seek group, for read, merge and drop. |
| job_id | string | – | For read: one seek's run id (J-…); leave out for the merged report. |
| op | string | – | list | read | merge | drop (default list). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_serials ~199
The searches the housekeeping keeps running on a cadence and reports what is new from — op=list (each with parked and due); op=add {name, query, every_days} keeps one; op=every {name, every_days} changes its cadence; op=park {name} keeps it without running it, op=unpark {name} puts it back in the rotation; op=remove {name} stops keeping it (write access).
| Name | Type | Req | Description |
|---|---|---|---|
| every_days | integer | – | For add: how often to re-run it (default 7). |
| name | string | – | A short name for the search (letters, digits, dashes). |
| op | string | – | list (default) | add | every | park | unpark | remove. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| query | string | – | For add: the search query. |
No output schema declared.
No examples provided.
library_settings ~170
The library's settings (write access): op=list shows every setting with what it is for and its value, a key only as set or not; op=set with name and value writes one (name as the key, or without its RESEARCHZOSHO_ prefix; a blank value, or op=unset, unsets it). A program sets a key or an address only when the person gave it in this conversation.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | The setting, e.g. podcastindex_key or RESEARCHZOSHO_WHISPER. |
| op | string | – | list (default) | set | unset. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| value | string | – | The value to write (set). |
No output schema declared.
No examples provided.
library_share ~184
The library reached from outside the house (write access): op=status says how it stands; op=tailscale, op=public (Tailscale Funnel: anyone with the link) or op=cloudflare (a quick tunnel; mail=… lets only listed addresses through) turns the relay on when its program is on the machine, only when the person asked for it in this conversation; op=off turns it off. A missing program is installed by the person on their own screen: researchzosho share, or /share in the chat.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | For cloudflare: the addresses or *@domains let through, comma-separated. | |
| op | string | – | status (default) | tailscale | public | cloudflare | off. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_sharpen ~177
SHARPEN a rough research question BEFORE running it: the library looks at what it already holds, asks who studies the question and what each would ask, and answers with the question rewritten, the assumptions it made (read them: a model sharpens by narrowing), a brief (scope, sub_questions, sources, deliverables), what is already held, at most three questions_for_you, a mode and a size (quick | full), and research_question — the text to pass to library_research as it is or after the person edits it. Proposes only; never runs research. Needs a model drive; two or three calls.
| Name | Type | Req | Description |
|---|---|---|---|
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| question | string | yes | The rough question, as the person typed it. |
No output schema declared.
No examples provided.
library_status ~48
library_id, library_name, contract, counts by kind and state, last_updated.
| Name | Type | Req | Description |
|---|---|---|---|
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_subjects ~70
The controlled vocabulary: {id, label, broader, narrower[], count}. Facets (the part before '--') are the broader terms. Use an id with library_search's subject filter.
| Name | Type | Req | Description |
|---|---|---|---|
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_submit ~203
Submit one finding as a DRAFT. It enters the librarian's review like any research run and never touches canon directly. A claim with no sources is refused (error no_sources). Requires a patron with write access.
| Name | Type | Req | Description |
|---|---|---|---|
| claim | string | yes | The claim itself, one to three self-contained sentences. |
| claim_type | string | – | extraction | synthesis | interpretation | speculation (default synthesis). |
| confidence | string | – | low | medium | high (default medium). |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| sources | array | yes | Where it comes from: URLs, edition citations, or {locator, edition, why} objects. |
| title | string | – | Optional short title (default: the claim's first words). |
| triple | object | – | Optional {subject, predicate, object}: the claim as an edge of the graph (library_map). Without it the nightly triples crew derives one. |
No output schema declared.
No examples provided.
library_subscribe ~170
Register a webhook: every change on this library's feed (retired, disputed, revised, supplied, …) is POSTed to your address, signed with a secret (X-ResearchZosho-Signature: sha256=hmac). The changes feed stays the source of truth. Needs a named patron.
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | – | Optional: only these events (retired, disputed, revised, supplied, accepted, …). Absent = all. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| secret | string | – | Optional. The signing secret; one is made for you when absent and returned once. |
| url | string | yes | Where to POST. http(s); a program on this machine is fine. |
No output schema declared.
No examples provided.
library_suggest ~211
What the library suggests the person do next, from the shelves' own events: a forecast whose date passed, a story the shelves have grown past, a question of theirs a claim now answers, a question asked again and again, a report that landed, a dossier not researched for months. Each is classed now, next or hold with the probability they take it up; their marks are the outcomes a Brier score is kept over. op=list (default): the open suggestions, now first. op=mark (write): id, outcome (taken, dismissed, later), note.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | For mark: the suggestion's id, S-…. |
| note | string | – | For mark: a word on why, optional. |
| op | string | – | list (default) | mark |
| outcome | string | – | For mark: taken, dismissed or later. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
No output schema declared.
No examples provided.
library_survey ~372
A thing the person already has, read as a starting point for research: a code repository (a folder, or a git url cloned when git is installed — it says so when git is missing), a paper (a PDF or document file, a DOI, an arXiv page), a website or product page (any other url), or an issue tracker (a GitHub issues page, or an export file). The kind is detected from the thing, or given. op=survey (the default) reads it, shelves the text, files one draft claim saying what it is, what it says or does, what it claims and what it rests on, and returns numbered directions: research questions the library could answer about it. Nothing runs at that point. op=pick with picks="1,3" files a research run for each direction named; op=do with question files the person's own direction and its run. pick and do take the thing by name (as surveyed).
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | repo, paper, site or issues; detected from the thing when not given. |
| name | string | – | The name the survey gave the thing, for pick and do. |
| op | string | – | survey (default), pick, or do. |
| path | string | – | A folder or a file on this machine (absolute path). Keeper only. |
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| picks | string | – | For pick: the direction numbers, like "1,3". |
| question | string | – | For do: what to research about it, in your own words. |
| url | string | – | A url: a git repository, a paper, a page, or a GitHub issues page. |
No output schema declared.
No examples provided.
library_tell ~147
What a person tells the library about a subject from their own knowledge: what it was like, who was there, an incident, a date. Filed as a claim of class told, in their words, dated, with them as the writer; the questions it raises that the public record could answer join the open questions, so an account can open a search. Answer with 'noted:' and what it raised.
| Name | Type | Req | Description |
|---|---|---|---|
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| subject | string | yes | Who or what this is about. |
| text | string | yes | What they said, in their words, a sentence or more. |
No output schema declared.
No examples provided.
library_unsubscribe ~49
Remove a webhook you registered.
| Name | Type | Req | Description |
|---|---|---|---|
| patron | object | – | Optional: who is asking — {did, name, runtime}. Anonymous when absent. |
| url | string | yes | The address you registered. |
No output schema declared.
No examples provided.
How do I install the ResearchZosho MCP server?
ResearchZosho runs locally as a container image, launched with docker run --rm -i ghcr.io/wyrdsekai/researchzosho:0.6.8. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/wyrdsekai/researchzosho
claude mcp add wyrdsekai-researchzosho -- docker run --rm -i ghcr.io/wyrdsekai/researchzosho:0.6.8
What is the ResearchZosho MCP server?
ResearchZosho is an MCP server listed in the public MCP registry as io.github.Wyrdsekai/researchzosho. Deep research assistant that checks its citations against the sources and keeps what it found. This page covers its container image (ghcr.io/wyrdsekai/researchzosho).
Is the ResearchZosho MCP server safe to use?
ResearchZosho scores 48 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ResearchZosho MCP server expose?
ResearchZosho exposes 49 tools: library_ask, library_search, library_get, library_read, library_established, and 44 more. Their descriptions and schemas cost roughly 14,073 tokens of context every time the server is loaded.
Is the ResearchZosho MCP server still maintained?
ResearchZosho is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the ResearchZosho MCP server under?
ResearchZosho declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.