AI-operable research workspace for Zotero, Obsidian, and NotebookLM. Use any two, or all three, through CLI, MCP, REST, and dashboard.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution in WenyuChiou/research-hub
transport stdio · http counts 34 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
add_paper
-
apply_cluster_summaries
-
apply_crystals
-
ask_cluster
-
auto_research_topic
-
build_citation
-
capture_quote
-
check_crystal_staleness
-
cleanup_garbage
-
cluster_prisma
-
cluster_rebind
-
collect_to_cluster
-
compose_brief_draft
-
compose_draft
-
download_artifacts
-
emit_cluster_base
-
emit_crystal_prompt
-
generate_dashboard
-
import_folder_tool
-
list_crystals
-
list_quotes
-
notebooklm_bundle
-
notebooklm_download
-
notebooklm_generate
-
notebooklm_upload
-
plan_research_workflow
-
propose_research_setup
-
read_cluster_memory
-
read_crystal
-
suggest_cluster_split
-
summarize_cluster
-
sync_cluster
-
tidy_vault
-
web_search
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 3143d2d · analyzer v28 · 2h ago
skills & prompt files 26
- agent-rules WenyuChiou-research-hub-3143d2d/AGENTS.md
- agent-rules WenyuChiou-research-hub-3143d2d/CLAUDE.md
- skill WenyuChiou-research-hub-3143d2d/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/gap-to-topic/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/literature-triage-matrix/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/notebooklm-brief-verifier/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/paper-memory-builder/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/paper-summarize/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/research-context-compressor/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/research-design-helper/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/research-hub-multi-ai/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/research-hub/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/research-project-orienter/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/skills/zotero-library-curator/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skill/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/gap-to-topic/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/literature-triage-matrix/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/notebooklm-brief-verifier/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/paper-memory-builder/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/paper-summarize/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/research-context-compressor/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/research-design-helper/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/research-hub-multi-ai/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/research-hub/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/research-project-orienter/SKILL.md
- skill WenyuChiou-research-hub-3143d2d/src/research_hub/skills_data/zotero-library-curator/SKILL.md
danger signals1
- dynamic code execution __import__ sink WenyuChiou-research-hub-3143d2d/tests/test_v0950_cluster_clear_and_archive.py :878
env={**__import__("os").environ, "PYTHONPATH": str(Path(__file__).parent.parent / "src")},
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 551
filesystem 113
- fs WenyuChiou-research-hub-3143d2d/src/research_hub/_invocation.py :5
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/analyze.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/api/v1.py :6
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/authenticity.py :12
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/auto.py :10
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/autofill.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cleanup.py :18
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli.py :11
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_citations.py :5
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_clusters.py :6
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_common.py :9
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_maintenance.py :9
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_paper.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_pipeline.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_search.py :12
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_summarize.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cli_vault.py :5
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cluster_overview.py :16
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/cluster_rebind.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/clusters.py :8
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/config.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/connectors/__init__.py :15
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/connectors/_notebooklm_adapter.py :9
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/context_cli.py :20
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/crystal.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/__init__.py :24
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/briefing.py :3
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/context.py :17
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/data.py :9
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/drift.py :5
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/events.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/executor.py :6
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/http_server.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/markdown_summary.py :21
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/render.py :6
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/screenshot.py :6
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/sections.py :26
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dedup.py :13
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/defuddle_extract.py :17
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/describe.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/discover.py :8
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/doctor.py :9
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/doctor_field.py :12
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/doi_lookup.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/drafting.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/dxt.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/ezproxy.py :25
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/fit_check.py :16
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/fsops.py :5
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/gap_analysis.py :16
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/graphify_bridge.py :21
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/importer.py :12
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/ingest_diff.py :18
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/init_wizard.py :6
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/llm_cli.py :12
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/locks.py :21
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/manifest.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :24
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/memory.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/ask.py :9
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/auth.py :7
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/bundle.py :8
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/client.py :11
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/download.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/keepalive.py :42
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/pdf_fetcher.py :12
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/upload.py :11
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/obsidian_bases.py :21
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/operations.py :9
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/paper.py :9
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/paper_schema.py :6
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/paper_summarize.py :6
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/pipeline.py :13
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/pipeline_repair.py :11
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/sample_vault.py :6
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/screening.py :19
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/search/abstract_recovery.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/security/__init__.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/security/secret_box.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/setup_command.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/skill_installer.py :16
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/suggest.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/summarize.py :39
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/tidy.py :16
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/topic.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/builder.py :76
with open(path, "r", encoding="utf-8") as fh: - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/categorize.py :8
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/cleanup.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/frontmatter_dedupe.py :27
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/gc.py :28
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/graph_config.py :13
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/hub_backlink_migrate.py :32
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/hub_overview.py :9
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/install_theme.py :24
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/link_updater.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/migrate.py :6
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/progress.py :6
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/repair.py :54
with open(path, 'r', encoding='utf-8') as fh: - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/summarize_migrate.py :5
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/sync.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/synthesis.py :16
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault/tag_migrate.py :23
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault_autofix.py :7
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/vault_search.py :5
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/verify.py :14
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/workflows.py :13
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/writing.py :5
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/client.py :25
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/enrich.py :8
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/fetch.py :445
with open(filepath, 'w', encoding='utf-8') as f: - fs WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/gc.py :10
from pathlib import Path - fs WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/pdf_attach.py :8
import shutil - fs WenyuChiou-research-hub-3143d2d/src/research_hub/zotero_hygiene.py :9
from pathlib import Path
shell / exec 11
- shell WenyuChiou-research-hub-3143d2d/src/research_hub/cli.py :12
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/cli_paper.py :8
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/cli_search.py :9
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/executor.py :7
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/defuddle_extract.py :18
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/doctor.py :731
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/llm_cli.py :13
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/auth.py :8
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/keepalive.py :411
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/paper_summarize.py :7
import subprocess - shell WenyuChiou-research-hub-3143d2d/src/research_hub/security/__init__.py :166
import subprocess
network 33
- net WenyuChiou-research-hub-3143d2d/src/research_hub/authenticity.py :15
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/citation_graph.py :14
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/http_server.py :12
from urllib.parse import urlparse - net WenyuChiou-research-hub-3143d2d/src/research_hub/dashboard/sections.py :135
from urllib.parse import quote as _quote - net WenyuChiou-research-hub-3143d2d/src/research_hub/doctor.py :13
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/ezproxy.py :27
from urllib.parse import quote, urlsplit, urlunsplit - net WenyuChiou-research-hub-3143d2d/src/research_hub/importer.py :213
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/init_wizard.py :289
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/pdf_fetcher.py :9
import urllib.parse - net WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/upload.py :13
from urllib.parse import unquote - net WenyuChiou-research-hub-3143d2d/src/research_hub/notebooklm/url_quality.py :13
from urllib.parse import urlparse - net WenyuChiou-research-hub-3143d2d/src/research_hub/operations.py :369
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/abstract_recovery.py :9
from urllib.parse import quote - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/arxiv_backend.py :10
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/biorxiv.py :11
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/chemrxiv.py :9
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/cinii.py :20
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/crossref.py :8
from urllib.parse import quote - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/dblp.py :8
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/eric.py :9
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/kci.py :14
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/nasa_ads.py :10
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/openalex.py :8
from urllib.parse import quote - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/pubmed.py :9
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/repec.py :10
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/semantic_scholar.py :9
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/ssrn_backend.py :16
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/search/websearch.py :17
from urllib.parse import parse_qs, quote_plus, unquote, urlparse - net WenyuChiou-research-hub-3143d2d/src/research_hub/security/__init__.py :9
from urllib.parse import urlsplit - net WenyuChiou-research-hub-3143d2d/src/research_hub/verify.py :17
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/client.py :22
import urllib.request - net WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/fetch.py :7
import requests - net WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/pdf_attach.py :15
from urllib.parse import urlparse
secrets 6
- secrets WenyuChiou-research-hub-3143d2d/src/research_hub/cli_maintenance.py :417
env_token = os.environ.get("RESEARCH_HUB_API_TOKEN", "").strip() - secrets WenyuChiou-research-hub-3143d2d/src/research_hub/config.py :161
zotero_api_key = config_zotero_api_key or os.environ.get("ZOTERO_API_KEY") - secrets WenyuChiou-research-hub-3143d2d/src/research_hub/doctor.py :975
zotero_key = os.environ.get("ZOTERO_API_KEY") or config_data.get("zotero", {}).get("api_key") - secrets WenyuChiou-research-hub-3143d2d/src/research_hub/search/websearch.py :118
return _ProviderConfig(name="tavily", api_key=os.environ.get("TAVILY_API_KEY")) - secrets WenyuChiou-research-hub-3143d2d/src/research_hub/security/__init__.py :79
import getpass - secrets WenyuChiou-research-hub-3143d2d/src/research_hub/zotero/client.py :125
api_key = os.environ.get("ZOTERO_API_KEY")
tool registrations 34
- web_search WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :291
- cluster_rebind WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :604
- build_citation WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :751
- list_quotes WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :774
- capture_quote WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :791
- compose_draft WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :818
- add_paper WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :983
- import_folder_tool WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1007
- suggest_cluster_split WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1100
- list_crystals WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1456
- read_crystal WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1486
- emit_crystal_prompt WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1525
- apply_crystals WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1539
- summarize_cluster WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1553
- apply_cluster_summaries WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1597
- check_crystal_staleness WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1615
- read_cluster_memory WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1703
- cluster_prisma WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :1709
- download_artifacts WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :2214
- generate_dashboard WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :2371
- propose_research_setup WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :2388
- notebooklm_bundle WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :2563
- notebooklm_upload WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :2593
- notebooklm_generate WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :2642
- notebooklm_download WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :2696
- ask_cluster WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :2882
- sync_cluster WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :3016
- compose_brief_draft WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :3027
- emit_cluster_base WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :3042
- auto_research_topic WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :3075
- plan_research_workflow WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :3157
- cleanup_garbage WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :3199
- tidy_vault WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :3254
- collect_to_cluster WenyuChiou-research-hub-3143d2d/src/research_hub/mcp_server.py :3278
declared dependencies 24
- fastmcp@>=2.0
- networkx@>=3.0,<4.0
- notebooklm-py@>=0.4.1,<0.5.0
- httpx@>=0.27,<1.0
- platformdirs@>=4.0,<6.0
- pyzotero@>=1.5.18,<2.0
- pyyaml@>=6,<7
- rapidfuzz@>=3.0,<4.0
- requests@>=2.28,<3.0
- cryptography@>=42
- pdfplumber@>=0.11
- python-docx@>=1.1
- readability-lxml@>=0.8
- rookiepy@>=0.1.0
- browser-cookie3@>=0.19.1
- patchright@>=1.55
- scholarly@>=1.7
- pytest@>=7
- pytest-cov@>=4.0
- pytest-mock@>=3.10
- pytest-socket@>=0.7
- pytest-split@>=0.8
- pytest-timeout@>=2.3
- responses@>=0.23
transport_posture 2
- network-listening, binds all interfaces, no auth detected WenyuChiou-research-hub-3143d2d/tests/test_dashboard_live_server.py :96
host="0.0.0.0", - network-listening, binds all interfaces, no auth detected WenyuChiou-research-hub-3143d2d/tests/test_v030_security.py :502
host="0.0.0.0",