# MCP Server Context — 2026-05-26T17:04:20.989Z

## Host
- OS: win32 (x64) | Windows: true
- Shell: cmd.exe
- CWD: C:\Users\Owner\Documents\Josef's Code 2026\Carl Miller Bot\carl-miller-bot5
- User: desktop-2nek92i\owner @ DESKTOP-2NEK92I

## Available Shell Tools
- ✓ whisper: C:\Users\Owner\AppData\Local\Programs\Python\Python310\Scripts\whisper.exe
- ✓ pwsh: PowerShell 7.6.2
- ✓ choco: 0.10.15
- ✓ winget: v1.28.240

## Missing Shell Tools
- ✗ node
- ✗ npm
- ✗ python
- ✗ pip
- ✗ git
- ✗ curl
- ✗ wget
- ✗ ffmpeg

## Agent Decision Tree
- 1. Is this the start of a session? → call get_context() first, always.
- 2. Does the task involve more than one step? → use unfold(). Do not chain primitives manually.
- 3. Does it involve a URL? → check if binary (mp3/zip/pdf/exe) → unfold(), never web_fetch for binary.
- 4. Does it involve audio/video/transcription? → unfold() → server selects Transcription River.
- 5. Is it one known single operation I'm certain about? → use the appropriate primitive directly.
- 6. Am I unsure which primitive to use? → use unfold() and describe the task.
- 7. Do I need to remember something across sessions? → notes_write or db_exec, not memory_set.
- 8. Is the task complete? → report what actually happened, including pass_results from unfold.

## Hard Rules
- ALWAYS call get_context at session start.
- ALWAYS use unfold() for multi-step tasks.
- NEVER use web_fetch for binary files (MP3, ZIP, PDF, images). Use unfold() or shell+curl.
- NEVER assume a tool works — check tool_capabilities[tool].status first.
- NEVER use memory_set for data that must survive a restart — use notes or db.
- If whisper is missing and transcription is needed, install it first: pip install openai-whisper
- If ffmpeg is missing and audio conversion is needed, install it first.

## Shell Guidance
- Python binary: NOT FOUND
- Download command: Invoke-WebRequest -Uri "<url>" -OutFile "<dest>"
- ffmpeg: ✗ not installed
- whisper: ✓

## Pass Architecture
unfold() selects from these named strategies based on task signals:
- **Transcription River**: FETCH → TRANSFORM(ffmpeg) → TRANSFORM(whisper) → STORE → RESPOND
- **Download and Convert**: FETCH → TRANSFORM → STORE → RESPOND
- **Web Harvest**: FETCH → CODE → STORE → RESPOND
- **Pure Fetch**: FETCH → RESPOND
- **Browser Quest**: BROWSE → [STORE] → RESPOND
- **Code and Store**: CODE → STORE → RESPOND  (run/execute + save/write — checked before Shell Strike)
- **Installation Stream**: SHELL → SHELL → RESPOND
- **Shell Strike**: SHELL → RESPOND  (single execution, no save)
- **Write Then Read**: STORE → RECALL → RESPOND  (write file then read it back)
- **Memory River**: RECALL → [CODE] → RESPOND
- **File Read**: RECALL → RESPOND
- **Notification Wave**: [FETCH|SHELL] → NOTIFY → RESPOND
- **Non-Action**: RESPOND (direct answer, no tools needed)

## Recipes (this machine)
### download_binary
```
shell({ command: 'Invoke-WebRequest -Uri "https://..." -OutFile "C:\\tmp\\file.mp3"' })
```

### download_and_transcribe
```
unfold({ task: "download https://example.com/file.mp3 and transcribe it" })
```

### install_whisper
```
python not found in PATH
```

### install_ffmpeg
```
shell({ command: "choco install ffmpeg -y" })
```

### run_python
```
python not found — install from python.org
```

### browse_page
```
unfold({ task: "browse https://example.com and extract the main content" })
```

### save_to_db
```
db_exec({ sql: "CREATE TABLE IF NOT EXISTS results (id INTEGER PRIMARY KEY, data TEXT, ts TEXT)" })
```

### telegram_send
```
Set TG_BOT_TOKEN env var first
```

### schedule_daily
```
schedule_add({ id: "daily_task", expression: "0 9 * * *", command: "echo daily" })
```

## Persistence
- **memory**: memory_set/get | persists: false | Session working state, temp values
- **notes**: notes_write/read | persists: true | Text output, transcripts, logs, markdown
- **database**: db_exec/query | persists: true | Structured data, records, search
- **files**: fs_write/read | persists: true | Arbitrary files, scripts, exports