FastMCP 3.2 server for AI agents to issue verbal commands to Alexa devices
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport — counts 7 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
agentic_alexa_query
-
alexa_mcp_shutdown
-
docs_help
-
interact
-
listen_for_response
-
show_alexa_interaction_status_prefab_card
-
speak_command
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit f8a4904 · analyzer v33 · 1w ago
skills & prompt files 8
- agent-rules sandraschi-alexa-mcp-f8a4904/.cursorrules
- agent-rules sandraschi-alexa-mcp-f8a4904/.github/copilot-instructions.md
- agent-rules sandraschi-alexa-mcp-f8a4904/.windsurfrules
- agent-rules sandraschi-alexa-mcp-f8a4904/AGENTS.md
- agent-rules sandraschi-alexa-mcp-f8a4904/CLAUDE.md
- prompt-file sandraschi-alexa-mcp-f8a4904/mcpb/assets/prompts/system.md
- prompt-file sandraschi-alexa-mcp-f8a4904/mcpb/assets/prompts/user.md
- skill sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/skills/alexa-bridge/SKILL.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 105
network 12
- net sandraschi-alexa-mcp-f8a4904/web_sota/src/common/FleetCard.tsx :23
const resp = await fetch(`http://localhost:${member.port}/api/status`, { signal: controller.signal }); - net sandraschi-alexa-mcp-f8a4904/web_sota/src/common/api.ts :99
const res = await fetch(`${api.logs}${qs ? `?${qs}` : ""}`); - net sandraschi-alexa-mcp-f8a4904/web_sota/src/common/bridge-run.ts :11
const res = await fetch(api.chatBridge, { - net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/audio.tsx :67
const res = await fetch(api.playback, { - net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/dashboard.tsx :8
const r = await fetch(`${API_BASE}/api/health`); - net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/help.tsx :19
fetch(api.status) - net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/presets.tsx :33
const r = await fetch(`${API_BASE}/api/presets`); - net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/schedule.tsx :28
const r = await fetch(`${API_BASE}/api/scheduler/commands`); - net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/settings.tsx :22
fetch(API_BASE + "/api/llm/providers").then(r => r.json()).then(d => { - net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/status.tsx :16
const res = await fetch(api.status); - net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/tools.tsx :38
const res = await fetch(api.tools); - net sandraschi-alexa-mcp-f8a4904/web_sota/src/store/llm.ts :33
const r = await fetch(`${API_BASE}/api/llm/discover`);
tool registrations 13
- show_alexa_interaction_status_prefab_card sandraschi-alexa-mcp-f8a4904/mcpb/src/prefab_tools.py :16
- docs_help sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :95
- speak_command sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :142
- listen_for_response sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :157
- interact sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :174
- agentic_alexa_query sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :206
- show_alexa_interaction_status_prefab_card sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/prefab_tools.py :16
- docs_help sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :124
- speak_command sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :171
- listen_for_response sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :193
- interact sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :218
- agentic_alexa_query sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :257
show 1 more
- alexa_mcp_shutdown sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :287
declared dependencies 46
- @radix-ui/react-dialog@^1.1.15
- @radix-ui/react-dropdown-menu@^2.1.16
- @radix-ui/react-label@^2.1.8
- @radix-ui/react-progress@^1.1.8
- @radix-ui/react-scroll-area@^1.2.10
- @radix-ui/react-select@^2.1.6
- @radix-ui/react-slot@^1.2.4
- @radix-ui/react-switch@^1.2.6
- @radix-ui/react-tabs@^1.1.13
- @radix-ui/react-tooltip@^1.2.8
- @tanstack/react-query@^5.90.21
- @tauri-apps/api@^2.2.0
show 28 more
- class-variance-authority@^0.7.1
- clsx@^2.1.1
- framer-motion@^11.15.0
- lucide-react@^0.563.0
- react@^19.2.0
- react-dom@^19.2.0
- react-router-dom@^7.13.0
- tailwind-merge@^3.4.0
- tailwindcss-animate@^1.0.7
- zustand@^5.0.14
- @biomejs/biome@^2.4.12
- @eslint/js@^9.39.1
- @playwright/test@^1.62.0
- @types/node@^24.10.1
- @types/react@^19.2.7
- @types/react-dom@^19.2.3
- @vitejs/plugin-react@^5.1.1
- autoprefixer@^10.4.24
- eslint@^9.39.1
- eslint-plugin-react-hooks@^7.0.1
- eslint-plugin-react-refresh@^0.4.24
- globals@^16.5.0
- postcss@^8.5.6
- tailwindcss@^3.4.17
- typescript@~5.9.3
- typescript-eslint@^8.48.0
- vite@^7.3.1
- tauri-build@2
6 more not shown — this panel samples each group; the count above is the real total.
perm:untrusted 2
- untrusted sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/dashboard.tsx :42
fetch(`${API_BASE}/api/logs/stats`).then(r => r.json()).then(d => { if (!cancelled) setLogCount(d.total || 0); }).catch(() => {}); - untrusted sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/settings.tsx :22
fetch(API_BASE + "/api/llm/providers").then(r => r.json()).then(d => {