github Python re-analysis due

Scovant/scovant-core

github

Open-source, evidence-first scanner for passive AI agent readiness signals on websites.

maintainer
Scovant
licence
Apache-2.0
first seen
2026-09-14
last seen
2026-09-17
releases · 30d
7
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 4 tools
transport stdio · http counts 4 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • explain_check
  • get_core_score
  • list_checks
  • scan_site
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit fe65ac1 · analyzer v33 · 4d ago

danger signals6

code evidence vv0.3.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 224

filesystem 21

  • fs Scovant-scovant-core-fe65ac1/src/scovant_core/action.py :31 from pathlib import Path
  • fs Scovant-scovant-core-fe65ac1/src/scovant_core/cli.py :16 from pathlib import Path
  • fs Scovant-scovant-core-fe65ac1/src/scovant_core/docs.py :25 from pathlib import Path
  • fs Scovant-scovant-core-fe65ac1/src/scovant_core/schema.py :22 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/_fixture_server.py :23 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/_source_tree.py :23 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/conftest.py :5 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_action_guard.py :8 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_operability_2.py :69 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_constraints.py :5 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_docs.py :7 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_docs_standards.py :1 from pathlib import Path
show 9 more
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_hardening_followups.py :6 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_no_cloud_imports.py :3 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_no_competitor_terms.py :14 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_npm_package.py :8 import shutil
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_parsers_html.py :2 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_registry_derivation.py :7 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_repo_hygiene.py :3 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_schema.py :7 from pathlib import Path
  • fs (weak) Scovant-scovant-core-fe65ac1/tests/test_truncation_check_completeness.py :20 from pathlib import Path

shell / exec 2

  • shell (weak) Scovant-scovant-core-fe65ac1/tests/test_action_guard.py :7 import subprocess
  • shell (weak) Scovant-scovant-core-fe65ac1/tests/test_npm_package.py :9 import subprocess

network 52

  • net Scovant-scovant-core-fe65ac1/src/scovant_core/analysis/integrity_probe.py :22 import socket
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/checks/access/core_access_007.py :3 from urllib.parse import urlsplit, urlunsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/checks/access/core_access_011.py :5 from urllib.parse import urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/cli.py :17 from urllib.parse import urlsplit, urlunsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/context.py :5 from urllib.parse import urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/contribute.py :6 from urllib.parse import urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/engine.py :10 from urllib.parse import urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/__init__.py :1 """Network probes; every function takes an httpx.Client and never raises."""
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/_http.py :31 both a real `httpx.Response` and `security.client._ProbeResponse` (the
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/agent_payments.py :13 import httpx
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/contact.py :6 from urllib.parse import urljoin, urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/link_headers.py :11 import httpx
show 28 more
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/machine_rep.py :12 import httpx
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/markdown.py :11 import httpx
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/oauth.py :7 from urllib.parse import urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/openapi.py :6 from urllib.parse import urljoin, urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/pages.py :5 from urllib.parse import urlsplit, urlunsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/policy_pages.py :21 from urllib.parse import urljoin, urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/gatherers/reference_integrity.py :13 from urllib.parse import urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/parsers/html.py :11 from urllib.parse import parse_qsl, urlencode, urljoin, urlsplit, urlunsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/parsers/robots.py :6 from urllib.robotparser import RobotFileParser
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/security/client.py :19 from urllib.parse import urlsplit
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/security/pinned_transport.py :10 import socket
  • net Scovant-scovant-core-fe65ac1/src/scovant_core/security/url_safety.py :6 import socket
  • net (weak) Scovant-scovant-core-fe65ac1/tests/_fixture_server.py :5 only works inside this process, via `httpx.BaseTransport` injection).
  • net (weak) Scovant-scovant-core-fe65ac1/tests/conftest.py :7 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_access.py :5 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_interfaces.py :3 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_interfaces_2.py :5 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_machine.py :3 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_machine_2.py :3 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_operability_2.py :3 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_trust_2.py :3 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_checks_trust_operability.py :3 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_cli.py :3 to a `FixtureTransport` (or a raising `httpx.MockTransport`) so every case is
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_client_security.py :1 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_contribute.py :3 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_gatherers.py :1 """Network gatherer probes: httpx.MockTransport-based unit tests.
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_gatherers_core.py :1 import httpx
  • net (weak) Scovant-scovant-core-fe65ac1/tests/test_gatherers_more.py :4 import httpx

12 more not shown — this panel samples each group; the count above is the real total.

tool registrations 4

  • scan_site Scovant-scovant-core-fe65ac1/src/scovant_core/mcp_server.py :62
  • get_core_score Scovant-scovant-core-fe65ac1/src/scovant_core/mcp_server.py :68
  • list_checks Scovant-scovant-core-fe65ac1/src/scovant_core/mcp_server.py :92
  • explain_check Scovant-scovant-core-fe65ac1/src/scovant_core/mcp_server.py :113

declared dependencies 13

  • mcp@>=1.28,<2
  • httpx@>=0.27,<1
  • beautifulsoup4@>=4.12,<5
  • lxml@>=5.2,<7
  • tldextract@>=5,<6
  • pydantic@>=2.7,<3
  • pytest@>=8,<9
  • pytest-cov@>=5,<7
  • ruff@==0.16.6
  • jsonschema@>=4.20,<5
  • mypy@>=1.10,<2
  • twine@>=5,<7
show 1 more
  • pyyaml@>=6,<7