FastMCP Bluesky / AT Proto client with SOTA webapp and a human-approved outbox for fleet promotion drafts. Dry-run by default.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 4 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
bluesky_help
-
bluesky_shutdown
-
bluesky_social_tool
-
show_outbox_card
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 83e326b · analyzer v33 · 1w ago
skills & prompt files 9
- agent-rules sandraschi-bluesky-mcp-83e326b/.cursorrules
- agent-rules sandraschi-bluesky-mcp-83e326b/.github/copilot-instructions.md
- skill sandraschi-bluesky-mcp-83e326b/.opencode/skills/session-context/SKILL.md
- agent-rules sandraschi-bluesky-mcp-83e326b/.windsurfrules
- agent-rules sandraschi-bluesky-mcp-83e326b/AGENTS.md
- agent-rules sandraschi-bluesky-mcp-83e326b/CLAUDE.md
- prompt-file sandraschi-bluesky-mcp-83e326b/assets/prompts/system.md
- prompt-file sandraschi-bluesky-mcp-83e326b/assets/prompts/user.md
- skill sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/skills/bluesky-outbox/SKILL.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 52
filesystem 8
- fs (weak) sandraschi-bluesky-mcp-83e326b/scripts/cua-smoke.py :47
with open(p) as f: - fs (weak) sandraschi-bluesky-mcp-83e326b/scripts/cua-webapp-test.py :33
from pathlib import Path - fs (weak) sandraschi-bluesky-mcp-83e326b/scripts/generate-mcpb-prompts.py :7
from pathlib import Path - fs sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/client.py :8
from pathlib import Path - fs sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/config.py :9
from pathlib import Path - fs sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/server.py :9
from pathlib import Path - fs sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/webhooks.py :9
from pathlib import Path - fs (weak) sandraschi-bluesky-mcp-83e326b/tests/test_portmanteau.py :5
from pathlib import Path
shell / exec 3
- shell (weak) sandraschi-bluesky-mcp-83e326b/scripts/cua-smoke.py :31
import subprocess - shell (weak) sandraschi-bluesky-mcp-83e326b/scripts/cua-webapp-test.py :27
import subprocess - shell sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/server.py :355
import subprocess
network 5
- net (weak) sandraschi-bluesky-mcp-83e326b/scripts/cua-smoke.py :34
import urllib.error - net (weak) sandraschi-bluesky-mcp-83e326b/scripts/cua-webapp-test.py :30
import urllib.error - net sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/__main__.py :14
import httpx - net sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/client.py :11
import httpx - net sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/server.py :324
import httpx
secrets 2
- secrets sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/config.py :46
self.app_password = os.getenv("BLUESKY_APP_PASSWORD", self.app_password) or "" - secrets sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/webhooks.py :41
return os.getenv("BLUESKY_WEBHOOK_SECRET", "") or ""
database 2
- db sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/outbox.py :7
import sqlite3 - db sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/webhooks.py :7
import sqlite3
tool registrations 4
- bluesky_social_tool sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/server.py :60
- bluesky_help sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/server.py :105
- bluesky_shutdown sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/server.py :131
- show_outbox_card sandraschi-bluesky-mcp-83e326b/src/bluesky_mcp/server.py :146
declared dependencies 14
- fastmcp@>=3.4.4,<4
- python-dotenv@>=1.0.0
- prefab-ui@>=0.14.0
- httpx@>=0.27.0
- pydantic@>=2.0.0
- fastapi@>=0.104.0
- uvicorn@>=0.23.0
- tauri-build@2
- tauri@2
- tauri-plugin-shell@2
- tauri-plugin-fs@2
- tauri-plugin-process@2
show 2 more
- serde@1
- serde_json@1