📡 Your own AI-powered news radar. Generates daily briefings in English & Chinese. | 用 AI 构建你专属的新闻雷达
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 13 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
hz_enrich_items
-
hz_fetch_items
-
hz_filter_items
-
hz_generate_summary
-
hz_get_metrics
-
hz_get_run_meta
-
hz_get_run_stage
-
hz_get_run_summary
-
hz_list_runs
-
hz_run_pipeline
-
hz_score_items
-
hz_send_webhook
-
hz_validate_config
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 596e2b1 · analyzer v33 · 1d ago
danger signals2
- suspicious endpoint t.me Thysrael-Horizon-596e2b1/src/scrapers/telegram.py :20
"https://t.me/s", - suspicious endpoint 169.254.169.254 (cloud metadata) Thysrael-Horizon-596e2b1/tests/test_url_security.py :20
"http://169.254.169.254/",
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 105
filesystem 23
- fs Thysrael-Horizon-596e2b1/src/_file_utils.py :5
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/main.py :7
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/mcp/horizon_adapter.py :11
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/mcp/run_store.py :9
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/mcp/service.py :9
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/orchestrator.py :7
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/processing/profiles.py :5
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/scrapers/twitter_playwright.py :11
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/setup/presets.py :10
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/setup/wizard.py :7
from pathlib import Path - fs Thysrael-Horizon-596e2b1/src/storage/manager.py :6
import shutil - fs (weak) Thysrael-Horizon-596e2b1/tests/conftest.py :4
from pathlib import Path
show 11 more
- fs (weak) Thysrael-Horizon-596e2b1/tests/test_analyzer.py :4
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_balanced_digest.py :3
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_classifier.py :4
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_enricher.py :4
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_main.py :1
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_mcp_adapter.py :5
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_mcp_run_store.py :3
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_mcp_service_smoke.py :5
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_profiles.py :2
import shutil - fs (weak) Thysrael-Horizon-596e2b1/tests/test_prompting.py :1
from pathlib import Path - fs (weak) Thysrael-Horizon-596e2b1/tests/test_storage.py :6
from pathlib import Path
network 29
- net Thysrael-Horizon-596e2b1/src/ai/markdown_utils.py :5
from urllib.parse import urlsplit - net Thysrael-Horizon-596e2b1/src/ai/summarizer.py :7
from urllib.parse import quote, urlsplit - net Thysrael-Horizon-596e2b1/src/extractors/base.py :6
import httpx - net Thysrael-Horizon-596e2b1/src/extractors/trafilatura.py :6
import httpx - net Thysrael-Horizon-596e2b1/src/mcp/service.py :11
from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit - net Thysrael-Horizon-596e2b1/src/orchestrator.py :9
from urllib.parse import unquote_plus, urlsplit - net Thysrael-Horizon-596e2b1/src/scrapers/base.py :6
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/gdelt.py :28
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/github.py :7
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/google_news.py :38
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/hackernews.py :8
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/openbb.py :34
import httpx
show 17 more
- net Thysrael-Horizon-596e2b1/src/scrapers/ossinsight.py :13
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/reddit.py :12
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/rss.py :11
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/telegram.py :9
import httpx - net Thysrael-Horizon-596e2b1/src/scrapers/twitter.py :11
import httpx - net Thysrael-Horizon-596e2b1/src/services/webhook.py :10
from urllib.parse import urlsplit, urlunsplit - net Thysrael-Horizon-596e2b1/src/setup/presets.py :13
import httpx - net Thysrael-Horizon-596e2b1/src/url_security.py :7
import socket - net (weak) Thysrael-Horizon-596e2b1/tests/test_extractors_trafilatura.py :7
import httpx - net (weak) Thysrael-Horizon-596e2b1/tests/test_gdelt.py :7
import httpx - net (weak) Thysrael-Horizon-596e2b1/tests/test_google_news.py :7
import httpx - net (weak) Thysrael-Horizon-596e2b1/tests/test_minimax_client.py :9
import httpx - net (weak) Thysrael-Horizon-596e2b1/tests/test_openbb_scraper.py :21
import httpx - net (weak) Thysrael-Horizon-596e2b1/tests/test_reddit.py :5
import httpx - net (weak) Thysrael-Horizon-596e2b1/tests/test_telegram.py :5
import httpx - net (weak) Thysrael-Horizon-596e2b1/tests/test_twitter.py :6
import httpx - net (weak) Thysrael-Horizon-596e2b1/tests/test_webhook.py :10
import httpx
secrets 3
- secrets Thysrael-Horizon-596e2b1/src/mcp/service.py :259
if ctx.config.sources.github and not os.getenv("GITHUB_TOKEN"): - secrets Thysrael-Horizon-596e2b1/src/scrapers/github.py :26
self.token = os.getenv("GITHUB_TOKEN") - secrets (weak) Thysrael-Horizon-596e2b1/tests/test_mcp_adapter.py :56
assert os.environ["ANTHROPIC_API_KEY"] == "sk-ant-test"
tool registrations 13
- hz_validate_config Thysrael-Horizon-596e2b1/src/mcp/server.py :136
- hz_fetch_items Thysrael-Horizon-596e2b1/src/mcp/server.py :156
- hz_score_items Thysrael-Horizon-596e2b1/src/mcp/server.py :178
- hz_filter_items Thysrael-Horizon-596e2b1/src/mcp/server.py :198
- hz_enrich_items Thysrael-Horizon-596e2b1/src/mcp/server.py :222
- hz_generate_summary Thysrael-Horizon-596e2b1/src/mcp/server.py :242
- hz_run_pipeline Thysrael-Horizon-596e2b1/src/mcp/server.py :266
- hz_list_runs Thysrael-Horizon-596e2b1/src/mcp/server.py :296
- hz_get_run_meta Thysrael-Horizon-596e2b1/src/mcp/server.py :318
- hz_get_run_stage Thysrael-Horizon-596e2b1/src/mcp/server.py :340
- hz_get_run_summary Thysrael-Horizon-596e2b1/src/mcp/server.py :362
- hz_get_metrics Thysrael-Horizon-596e2b1/src/mcp/server.py :384
show 1 more
- hz_send_webhook Thysrael-Horizon-596e2b1/src/mcp/server.py :406
declared dependencies 22
- mcp@>=1.0.0
- httpx@>=0.27.0
- feedparser@>=6.0.11
- anthropic@>=0.39.0
- openai@>=1.54.0
- google-genai@>=0.3.0
- pydantic@>=2.9.0
- python-dateutil@>=2.9.0
- rich@>=13.9.0
- tenacity@>=9.0.0
- python-dotenv@>=1.0.0
- ddgs@>=7.0.0
show 10 more
- beautifulsoup4@>=4.12.0
- markdown@>=3.10.2
- opencc-python-reimplemented@>=0.1.7
- trafilatura@>=2.1.0
- pytest@>=8.0.0
- pytest-cov@>=5.0.0
- openbb@>=4.4.0
- openbb-benzinga@>=1.6.0
- playwright@>=1.40.0
- playwright-stealth@>=1.0.0