Announcing Beacon: Self-improving memory for coding agents
← All MCP servers
MCP server

Maestro Career Studio

mcp:seinun-ai/maestro-career-studio

Tailor resumes, score them against job posts and track applications, all on your own machine.

Verdict
Inconclusive

The analysis could not cover enough of the artifact to decide.

Analyzed Oct 29, 2026, 16:09 UTC at d0cd097

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

0
findings
—
highest severity
0
threat classes
2,087
files scanned
0/43,922
checks satisfied
0
package advisories

Why this verdict

mcp-server . Inconclusive
  • inconclusive: gap dynamic_metadata at backend/mcp_server/http.py
  • inconclusive: gap dynamic_metadata at backend/mcp_server/tests/test_http.py
  • inconclusive: gap glob_budget_exceeded at extension/panel/panel.js
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_applications_router.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_autofill_step.py
  • inconclusive: gap no_dataflow_for_dynamic_code at extension/content/fill-base.js
  • inconclusive: gap no_dataflow_for_dynamic_code at frontend/components/render-harness.mjs
  • inconclusive: gap no_dataflow_for_dynamic_code at scripts/update.sh
  • inconclusive: gap parse_error at frontend/lib/api.ts
  • inconclusive: gap pass_skipped
  • inconclusive: judge runs incomplete or invalid
  • inconclusive: ledger 0/14750 checks satisfied
mcp-server backend Inconclusive
  • inconclusive: gap dynamic_metadata at backend/mcp_server/http.py
  • inconclusive: gap dynamic_metadata at backend/mcp_server/tests/test_client_coach.py
  • inconclusive: gap dynamic_metadata at backend/mcp_server/tests/test_http.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/scripts/native/common.sh
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/browser/test_panel_preview.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/browser/test_spike_background_fill.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/maestro_cs/test_supervisor.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_applications_router.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_autofill_step.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_health_evaluation_migration.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_jobs_country_code_migration.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_llm_openai_compat.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_memory_budget.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_memory_profile.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_tailoring_prompt_resync.py
  • inconclusive: gap no_dataflow_for_dynamic_code at backend/tests/test_voice_prompt_resync.py
  • inconclusive: gap no_dataflow_for_dynamic_code at frontend/components/render-harness.mjs
  • inconclusive: gap no_dataflow_for_dynamic_code at scripts/update.sh
  • inconclusive: gap parse_error at frontend/lib/api.ts
  • inconclusive: gap pass_skipped
  • inconclusive: judge runs incomplete or invalid
  • inconclusive: ledger 0/29172 checks satisfied

Security findings 0

No individual findings recorded

The inconclusive verdict rests on the coverage gaps below.

Execution chain 161

What it calls, runs, installs, reads and writes, with the line that does it.

Environment variables 48

ALLOWED_HOSTS
CLAUDECODE
COMPOSE_PROJECT_NAME
DATABASE_URL
INTERNAL_API_URL
MAESTRO_CS_EXTENSION_IDS
MAESTRO_TEST_DB_MINTED
MAESTRO_WEB_PORT
NATIVE_LAUNCHER
NEXT_PUBLIC_API_DIRECT
NEXT_PUBLIC_API_URL
NEXT_PUBLIC_APP_VERSION
PYTEST_XDIST_WORKER

Commands run 50

__import__("copy")
__import__("httpx")
__import__("re")
__import__(f"migrations.versions.{REVISION}_jobs_country_code")
--version
"$1/health.sh" >/dev/null 2>&1 || "$1/start.sh" --watchdog
"$1/health.sh" >/dev/null 2>&1 || "$1/start.sh" --watchdog; "$1/health.sh" >/dev/null 2>&1 || "$1/start.sh" --watchdog
[[ "$NATIVE_PID_ARGS" == "$home/venv/bin/python -m uvicorn app.main:app"* || "$NATIVE_PID_ARGS" == "$home/venv/bin/python -c $NATIVE_LAUNCHER app.main:app"* ]]
backup
bash -c {…} watchdog {…}
bash -c exec -a "$0" sleep 60 {…}
bash -c source "$1"; native_free_port native-port-probe {…}
bash -c source "$1"; native_load_env; "$2" -c 'from native_test_support import record; record("load_env")' probe {…} {…}
bash -c source "$1"; native_load_env; printf %s "${SYNC_KEY_FILE-unset}" probe {…}
bash -c source "$1"; native_read_pid native-pid-probe {…}
bash -c source "$1/common.sh" && printf %s "$NATIVE_LAUNCHER" x {…}
bash {…} --bogus
bash {…} --no-pause
bash {…} --pair --code {…}
bash {…} --unpause
bash {…} --unpause --watchdog
bash {…} --watchdog
bash {…} {…}
components/automations/automations-page.test.mjs
components/automations/recent-runs.tsx
components/charts/heatmap-chart.test.mjs
components/charts/heatmap-chart.tsx
components/inbox-simplify.test.mjs
components/job-knockout-card.tsx
components/job-ownership.test.mjs
components/job-ownership.tsx
components/profile/profile-view.test.mjs
components/profile/profile-view.tsx
components/profile/use-autofill-query.test.mjs
components/profile/use-autofill-query.ts
components/proposals/cap-today.tsx
components/proposals/inbox-counts.tsx
components/proposals/inbox-run-notice.tsx
Signature

Files read 50

--print-only: skipping Claude Code registration and .mcp.json
.env keys match .env.example
.env.production
.github/workflows/ci.yml
.mcp.json
$REPO/.env
$REPO/.env.example
$REPO/.mcp.json
acme_phone_country.html
acme_role_detail.html
acme_upload_swap.html
address_autocomplete.html
adversarial_recipe_poison.html
adversarial_revert.html
adversarial_same_text.html
adversarial_search_headers.html
adversarial_trusted_only.html
adversarial_virtual_same_text.html
antd_readonly_select.html
app/analytics/page.tsx
app/api/[...path]/route.ts
app/applications/job-bulk.tsx
app/applications/page.tsx
app/applications/use-tracker-filters.ts
app/automations/page.tsx
app/base-resumes/page.tsx
app/career/page.tsx
app/global-error.tsx
app/jobs/[id]/page.tsx
app/jobs/[id]/tailor/[sessionId]/page.tsx
app/profile/page.tsx
app/proposals/page.tsx
app/referrals/page.tsx
app/routers/career_kb.py
app/routers/jobs.py
app/templates/[id]/page.tsx
The .mcp.json above covers sessions opened in this repo. To reach the

Coverage gaps 36

Parts of the artifact the static analysis could not fully examine.

context:unanalyzable_binary binary content is only byte-scanned
docs/assets/brand/icons/favicon.ico
glob_budget_exceeded reference source exceeds 262144 characters
extension/panel/panel.js
parse_error tree-sitter typescript parse has errors; extraction may be partial
frontend/lib/api.ts
dynamic_metadata line 116: prompt (computed name) name depends on unsupported construct (unsupported): 'list_prompts' has no call site in the artifact: async def list_prompts(self) -> list[Prompt]: return [ Prompt(name=c["id"], title=c.get("title"), description=c.get("su…
backend/mcp_server/http.py
dynamic_metadata line 116: prompt (computed name) title depends on unsupported construct (unsupported): 'list_prompts' has no call site in the artifact: async def list_prompts(self) -> list[Prompt]: return [ Prompt(name=c["id"], title=c.get("title"), description=c.get("su…
backend/mcp_server/http.py
dynamic_metadata line 116: prompt (computed name) description depends on unsupported construct (unsupported): 'list_prompts' has no call site in the artifact: async def list_prompts(self) -> list[Prompt]: return [ Prompt(name=c["id"], title=c.get("title"), description=c.get("su…
backend/mcp_server/http.py
dynamic_metadata line 191: tool (computed name) registration depends on unsupported construct (unsupported): server object plain handed to mcp_http.McpEndpoint(): tools may be registered out of sight
backend/mcp_server/tests/test_http.py
dynamic_metadata line 290: tool (computed name) registration depends on unsupported construct (unsupported): server object scratch handed to mcp_http.offload_tools(): tools may be registered out of sight
backend/mcp_server/tests/test_http.py
dynamic_metadata line 292: tool (computed name) registration depends on unsupported construct (unsupported): server object scratch handed to mcp_http.offload_tools(): tools may be registered out of sight
backend/mcp_server/tests/test_http.py
no_dataflow_for_dynamic_code line 829: invoked code is not structurally extracted
backend/tests/test_applications_router.py
no_dataflow_for_dynamic_code line 1127: invoked code is not structurally extracted
backend/tests/test_applications_router.py
no_dataflow_for_dynamic_code line 1172: invoked code is not structurally extracted
backend/tests/test_applications_router.py
no_dataflow_for_dynamic_code line 1215: invoked code is not structurally extracted
backend/tests/test_applications_router.py
no_dataflow_for_dynamic_code line 566: invoked code is not structurally extracted
backend/tests/test_autofill_step.py
no_dataflow_for_dynamic_code line 567: invoked code is not structurally extracted
backend/tests/test_autofill_step.py
no_dataflow_for_dynamic_code line 119: invoked code is not structurally extracted
extension/content/fill-base.js
no_dataflow_for_dynamic_code line 32: invoked code is not structurally extracted
frontend/components/render-harness.mjs
no_dataflow_for_dynamic_code line 78: invoked code is not structurally extracted
scripts/update.sh
no_dataflow_for_dynamic_code line 135: invoked code is not structurally extracted
scripts/update.sh
pass_skipped 386 passes skipped (judge 379, vision 7): pass budget: 602 more passes after 0 would exceed the cap of 100
dynamic_metadata line 32: tool (computed name) registration depends on unsupported construct (unsupported): module object is handed to other code
backend/mcp_server/tests/test_client_coach.py
dynamic_metadata line 339: tool (computed name) name depends on unsupported construct (unsupported): '_scratch_answer' has no call site in the artifact: def _scratch_answer(raised: Exception, name: str = "refused") -> dict: """What an agent reads when a scratch tool raise…
backend/mcp_server/tests/test_http.py
no_dataflow_for_dynamic_code line 30: invoked code is not structurally extracted
backend/tests/browser/test_panel_preview.py
no_dataflow_for_dynamic_code line 20: invoked code is not structurally extracted
backend/tests/browser/test_spike_background_fill.py
no_dataflow_for_dynamic_code line 88: invoked code is not structurally extracted
backend/tests/maestro_cs/test_supervisor.py
no_dataflow_for_dynamic_code line 55: invoked code is not structurally extracted
backend/tests/test_health_evaluation_migration.py
no_dataflow_for_dynamic_code line 82: invoked code is not structurally extracted
backend/tests/test_jobs_country_code_migration.py
no_dataflow_for_dynamic_code line 91: invoked code is not structurally extracted
backend/tests/test_jobs_country_code_migration.py
no_dataflow_for_dynamic_code line 258: invoked code is not structurally extracted
backend/tests/test_llm_openai_compat.py
no_dataflow_for_dynamic_code line 259: invoked code is not structurally extracted
backend/tests/test_llm_openai_compat.py
no_dataflow_for_dynamic_code line 38: invoked code is not structurally extracted
backend/tests/test_memory_budget.py
no_dataflow_for_dynamic_code line 28: invoked code is not structurally extracted
backend/tests/test_memory_profile.py
no_dataflow_for_dynamic_code line 26: invoked code is not structurally extracted
backend/tests/test_tailoring_prompt_resync.py
no_dataflow_for_dynamic_code line 30: invoked code is not structurally extracted
backend/tests/test_voice_prompt_resync.py
no_dataflow_for_dynamic_code line 135: invoked code is not structurally extracted
backend/scripts/native/common.sh
pass_skipped 401 passes skipped (judge 397, vision 4): pass budget: 602 more passes after 0 would exceed the cap of 100