github Python analyzed 3143d2d

WenyuChiou/research-hub

github

AI-operable research workspace for Zotero, Obsidian, and NotebookLM. Use any two, or all three, through CLI, MCP, REST, and dashboard.

maintainer
WenyuChiou
license
MIT
first seen
2026-06-07
last seen
2026-07-21
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in WenyuChiou/research-hub
capabilities 34 tools
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
skills & danger signals github-tarball
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

danger signals1

code evidence vv1.0.0 · github-tarball
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",