A self-hosted deep-retrieval MCP server that transcribes speech, reads behind logins, sees images and video frames, crosses languages, and remembers. Multi-source information retrieval across 50+ curated sources with semantic recall, citation graphs, and structured data extraction.
OmniSeek exposes 18 tools with partial to good schema coverage and generally descriptive names. Strengths: verb-prefixed names (omniseek_search, omniseek_read), comprehensive input schemas with enums and type definitions, clear stratification of read-only vs write tools, and detailed parameter descriptions. Weaknesses: output schemas are not documented (the description states 'Returns available domains...' but no formal response structure is visible in the source), error handling guidance is absent (no recovery instructions for failed reads, missing sources, etc.), and critical fields needed for tool chaining are not guaranteed in responses (e.g., omniseek_search returns 'ranked/deduped results' but the exact response structure with IDs, URLs, and metadata is not formally specified). The tool-read orchestrator (omniseek_gather) is well-designed for batching, but omniseek_sensor and omniseek_curator_act introduce state management complexity without documented error cases or failure modes. Per-tool variation is significant: omniseek_search, omniseek_sources, and omniseek_read have robust schemas, while omniseek_graph and omniseek_curator_view rely on action enums with underspecified args objects.
Retrieve coauthors of a researcher with institutional and temporal context.
Curator actions on sources: stage_candidate, stage_commit, apply_live, rollback_live, retire_live. Updates source lifecycle and generates ready-to-paste config rows.
View curator state (admitted sources, rejected candidates, live overlays, health). Action: status/admission_log/rejected_log/live_overlays/health.
Retrieve the structural skeleton of a research field (subfields, major institutions, key figures, timeline).
Run several read-only calls in one round-trip with configurable wait budget. Stragglers continue warming in background.
View the memory of relations. One stable verb: view= + args={}. No-view call lists available views. Views: find, stats, neighborhood, between, voices, since, similar. Policies: conservative|working|exploratory.
Output schemas are completely undocumented. Tool descriptions state what results are returned (e.g., 'Returns ranked, cross-lingual, deduped sweep') but no formal response structure (field names, types, required fields) is visible in the source. LLMs cannot plan downstream tool calls or extract necessary chaining IDs without knowing response format.
No error handling or recovery guidance. omniseek_read states it returns 'reason flags for walled vs empty content' but does not document what those flags are, how to interpret them, or what an LLM should do when encountering them. omniseek_sensor and omniseek_ruling lack failure mode documentation (e.g., what happens if a query is malformed, or if a ruling conflicts with existing statements?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Retrieve institution cohort information (affiliated researchers, departments, output metrics).
Enrich paper metadata with citation graphs, full text, retraction status, and integrity information.
Recommend papers related to a topic with ranking and dedup across sources.
Extract text from any URL or document file. Auto-routes to appropriate reader. On failed read, returns reason flags for walled vs empty content.
Resolve identity across multiple sources using citation graphs and institutional affiliations.
Record/list/retract identity rulings (same_as|not_same_as). The one judgment channel where the graph's working policy applies. Actions: create/list/delete.
Ranked, cross-lingual, deduped sweep across curated sources. The primary verb for broad retrieval without named drill. Supports raw per-source buckets and full result depth.
Standing queries with novelty detection. Optional detect_absence for watched item takedown/disappearance. Supports create/list/delete/run actions with scheduled in-process execution.
Orient on available sources. Returns available domains, capabilities verb-index, and source names. Narrow by domain/region/query with optional facets and health check.
Record/list/retract typed, directed relation statements with free vocabulary. General sibling of omniseek_ruling. Identity types refused. Actions: create/list/delete.
Convert spoken audio to text. Supports optional per-line timestamps and speaker turn diarization (who-said-what).
See images, document figures, and video frames. Auto-routes based on content type. Supports render_pages parameter to render whole PDF pages to images.
omniseek_graph and omniseek_curator_view rely on underspecified 'action' enums with free-form 'args' objects. The 'args' parameter has type 'object' with no schema, no description of which keys apply to which action, and no type information for values. An LLM cannot confidently construct args for find, stats, neighborhood, or between views.
omniseek_curator_act accepts a 'row' parameter of type 'object' with no schema or description of expected keys/values. stage_candidate and apply_live both accept this parameter, but LLMs have no guidance on what a valid source config row looks like or which fields are required.
Parameter descriptions lack format/range constraints. omniseek_search 'wait_s' parameter accepts a number with no minimum/maximum; omniseek_paper_recommend 'limit' and omniseek_coauthors 'limit' have no bounds. Unbounded numeric parameters let LLMs pass absurd values (e.g., limit=999999) that break performance or downstream APIs.
omniseek_sources and omniseek_curator_view 'verbose' and 'check_health' parameters lack context. Descriptions do not explain the performance or latency cost of setting these to true, or when an LLM should vs should not use them. Agents may unnecessarily request verbose output on every call.
Composition risk: omniseek_sensor and omniseek_ruling are stateful operations (create/delete) with no idempotency guarantees or dual-confirmation patterns. If an agent retries a failed sensor creation, it may create duplicates. No dry-run or confirmation_request pattern is documented.
Pagination not addressed. omniseek_sources, omniseek_paper_recommend, omniseek_coauthors, and omniseek_institution_cohort all return lists but no limit or offset parameters are visible (only 'limit' on recommend/coauthors/cohort). omniseek_gather accepts 'calls' as an array with no explicit size cap, inviting context overflow.
Identifiers across paper-related tools (omniseek_paper_enrich, omniseek_paper_recommend, omniseek_field_skeleton) may not align. omniseek_paper_enrich accepts 'paper_id' (DOI, arXiv, URL) but omniseek_paper_recommend returns recommendations without clear ID format guidance. Agents may fail to chain results to omniseek_paper_enrich if ID formats are inconsistent.