Framewise — your always-on video team. Website to researched ideas, AI-directed videos and connected-channel publishing. Google Cloud + Gemini + Veo + Parallel.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport streamable-http · http counts 34 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
analytics_get_summary
-
automation_activate
-
automation_configure
-
automation_get
-
calendar_get
-
generation_cancel
-
generation_get_status
-
generation_list
-
generation_retry
-
generation_start
-
idea_create
-
idea_list
-
project_get
-
project_list
-
project_update_brief
-
project_update_context
-
publication_commit
-
publication_prepare
-
research_feedback_get
-
research_get_status
-
research_run
-
source_add_text
-
source_add_url
-
source_item_list
-
source_list
-
strategy_activate
-
strategy_get_active
-
strategy_get_proposals
-
topic_candidate_list
-
topic_candidate_reject
-
topic_candidate_select
-
video_approve
-
video_get
-
video_list
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 2b59097 · analyzer v33 · 1w ago
danger signals1
- suspicious endpoint 169.254.169.254 (cloud metadata) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_security.py :13
"http://169.254.169.254/latest/meta-data",
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 90
filesystem 16
- fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/config.py :4
from pathlib import Path - fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/providers.py :12
from pathlib import Path - fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/publishing.py :5
import shutil - fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/reassembly.py :7
from pathlib import Path - fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/renderer.py :7
import shutil - fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/routes.py :14
from pathlib import Path - fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/social_browser.py :7
from pathlib import Path - fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/storage.py :7
from pathlib import Path, PurePosixPath - fs SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/workflow.py :9
from pathlib import Path - fs (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/conftest.py :4
import shutil - fs (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_deployment_config.py :3
from pathlib import Path - fs (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_observability.py :5
from pathlib import Path
show 4 more
- fs (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_pipeline_e2e.py :7
from pathlib import Path - fs (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_renderer_composition.py :5
from pathlib import Path - fs (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_scene_versions.py :4
from pathlib import Path - fs (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_social_browser.py :6
from pathlib import Path
shell / exec 4
- shell SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/publishing.py :6
import subprocess - shell SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/renderer.py :8
import subprocess - shell (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_pipeline_e2e.py :5
import subprocess - shell (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_renderer_composition.py :4
import subprocess
network 12
- net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/billing_routes.py :7
from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit - net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/email_service.py :9
import httpx - net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/events.py :12
import httpx - net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/ingestion.py :7
from urllib.parse import urljoin - net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/paypal.py :7
import httpx - net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/providers.py :15
import httpx - net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/routes.py :18
import httpx - net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/security.py :4
import socket - net SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/storage.py :9
from urllib.parse import quote - net SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :8
import httpx - net (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_ingestion.py :8
from httpx import Response - net (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_publishing.py :5
from urllib.parse import parse_qs, urlparse
secrets 2
- secrets SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :36
TOKEN = os.getenv("APP_API_TOKEN", "").strip() - secrets (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/conftest.py :16
os.environ["APP_DEMO_TOKEN"] = "demo-token"
database 30
- db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/admin_routes.py :9
from sqlalchemy import func, or_, select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/auth.py :11
from sqlalchemy import select, update - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/auth_routes.py :12
from sqlalchemy import select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/billing.py :12
from sqlalchemy import func, select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/billing_routes.py :11
from sqlalchemy import select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/database.py :5
from sqlalchemy import create_engine - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/email_service.py :11
from sqlalchemy import func, select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/events.py :13
from sqlalchemy import select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/idea_lifecycle.py :7
from sqlalchemy import select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/models.py :6
from sqlalchemy import ( - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/reassembly.py :10
from sqlalchemy import select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/repository.py :10
from sqlalchemy import Select, select
show 18 more
- db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/routes.py :34
from sqlalchemy import or_, select, update - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/security.py :11
from sqlalchemy import select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/seed.py :6
from sqlalchemy import select - db SubSchoolLTD-agentic-video-studio-2b59097/apps/api/app/workflow.py :12
from sqlalchemy import select - db SubSchoolLTD-agentic-video-studio-2b59097/migrations/env.py :6
from sqlalchemy import engine_from_config, pool - db SubSchoolLTD-agentic-video-studio-2b59097/migrations/versions/0001_initial_domain.py :7
import sqlalchemy as sa - db SubSchoolLTD-agentic-video-studio-2b59097/migrations/versions/0002_accounts_billing_admin.py :7
import sqlalchemy as sa - db SubSchoolLTD-agentic-video-studio-2b59097/migrations/versions/0003_session_organization.py :7
import sqlalchemy as sa - db SubSchoolLTD-agentic-video-studio-2b59097/migrations/versions/0004_price_rule_provenance.py :7
import sqlalchemy as sa - db SubSchoolLTD-agentic-video-studio-2b59097/migrations/versions/0005_dollar_wallet_paypal.py :7
import sqlalchemy as sa - db SubSchoolLTD-agentic-video-studio-2b59097/migrations/versions/0007_google_auth_identity.py :7
import sqlalchemy as sa - db SubSchoolLTD-agentic-video-studio-2b59097/migrations/versions/0008_idea_lifecycle.py :7
import sqlalchemy as sa - db (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_auth_multitenancy.py :8
from sqlalchemy import select - db (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_billing.py :7
from sqlalchemy import select - db (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_pipeline_e2e.py :11
from sqlalchemy import func, select - db (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_production_seed.py :3
from sqlalchemy import create_engine, select - db (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_scene_editing.py :4
from sqlalchemy import select - db (weak) SubSchoolLTD-agentic-video-studio-2b59097/tests/test_scene_versions.py :7
from sqlalchemy import func, select
tool registrations 34
- project_list SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :102
- project_get SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :108
- project_update_brief SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :114
- project_update_context SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :122
- automation_get SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :153
- automation_configure SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :159
- automation_activate SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :204
- source_add_text SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :212
- source_add_url SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :238
- source_list SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :266
- source_item_list SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :272
- research_run SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :278
show 22 more
- research_get_status SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :286
- research_feedback_get SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :292
- topic_candidate_list SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :298
- topic_candidate_select SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :304
- topic_candidate_reject SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :312
- idea_create SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :324
- idea_list SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :340
- generation_start SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :346
- generation_get_status SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :378
- generation_list SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :384
- generation_retry SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :390
- generation_cancel SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :398
- video_get SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :406
- video_list SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :412
- video_approve SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :418
- publication_prepare SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :426
- publication_commit SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :448
- analytics_get_summary SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :458
- strategy_get_active SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :464
- strategy_get_proposals SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :470
- strategy_activate SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :476
- calendar_get SubSchoolLTD-agentic-video-studio-2b59097/apps/mcp/server.py :484
declared dependencies 30
- mcp@>=1.13.0,<2
- alembic@>=1.16.5
- argon2-cffi@>=25.1.0
- cryptography@>=46.0.0,<51
- email-validator@>=2.2.0
- fastapi@>=0.116.1
- feedparser@>=6.0.11
- google-adk@>=1.12.0
- google-api-python-client@>=2.179.0
- google-auth-oauthlib@>=1.2.2
- google-cloud-storage@>=3.3.0
- google-cloud-secret-manager@>=2.24.0
show 18 more
- google-cloud-pubsub@>=2.31.1
- google-cloud-texttospeech@>=2.27.0
- google-genai@>=1.29.0
- httpx@>=0.28.1
- opentelemetry-api@>=1.36.0
- opentelemetry-sdk@>=1.36.0
- playwright@==1.62.0
- pydantic-settings@>=2.10.1
- PyJWT@>=2.10.1
- psycopg@>=3.2.9
- python-multipart@>=0.0.20
- sqlalchemy@>=2.0.43
- uvicorn@>=0.35.0
- pytest@>=8.4.1
- pytest-asyncio@>=1.1.0
- pytest-cov@>=6.2.1
- respx@>=0.22.0
- ruff@>=0.12.8