Claude's Tool Inventory (Hook Street Workspace)
Last updated: 2026-05-21 Session 36 cont
Purpose: stops me from re-discovering capabilities every session. Every Claude Code session in this workspace should read this after CLAUDE.md +.remember/now.mdand use it to choose the right tool the first time.
File operations (preferred over Bash)
| Tool | Use for | Notes |
|---|---|---|
Read |
Open any file | Absolute paths. Tracks state — no re-Read after Write. |
Write |
Create new file / full overwrite | Must Read first if file exists. |
Edit |
Surgical string-replace | old_string must be unique unless replace_all:true. |
Glob |
Find files by pattern | **/*.html etc. Faster than Bash find. |
Grep |
Content search | Ripgrep under the hood. Use output_mode:files_with_matches first to scope, then content for details. |
Shell
| Tool | When |
|---|---|
Bash |
Unix-style commands, git, clasp, multi-step shell. Default working dir = workspace root. |
PowerShell |
When ASCII-only matters (no 2>&1), System.Drawing, Move-Item -Force for OneDrive file locks, or when bash can't handle Windows paths. |
ScheduleWakeup |
/loop dynamic mode only. Don't poll. |
Sub-agents (parallel work)
| Type | Best for |
|---|---|
Explore |
Read-only multi-file searches. Use when answer requires sweeping many files; you only need the conclusion. |
Plan |
Designing implementation strategy before coding. Returns step-by-step plan with critical files identified. |
general-purpose |
Multi-step research, unknown-shape questions. |
code-simplifier |
Cleaning up code post-build. |
MCPs available (load schema via ToolSearch first)
| Tool family | What it does |
|---|---|
mcp__claude_ai_Gmail__* |
create_draft, list_drafts, search_threads, get_thread, label operations. No delete-draft. Always get_thread to verify; plaintextBody can be empty while HTML body is full. |
mcp__claude_ai_Google_Drive__* |
read_file_content returns markdown-rendered sheets, search_files, create_file, list_recent_files. |
mcp__claude_ai_Google_Calendar__* |
create_event, list_events, update_event, reminders + colors + TZ. |
mcp__claude_ai_Netlify__* |
Netlify deploy/extension/project services. |
mcp__claude_ai_Cloudflare_Developer_Platform__authenticate |
If we ever need CF API access programmatically. Not used yet. |
WebFetch |
URL → markdown → small-model answer. Cached 15 min. HTTPS only; fails on auth'd URLs (use gh for those). |
WebSearch |
Live web search. |
Workspace-specific operational paths
| Need | Command |
|---|---|
| Text Sam from any session | powershell -File scripts/tg.ps1 -Source Code -Title "<subject>" -Message "your text" — always pass -Source (Code/MIS/System/Pulse/Mom/Family/Bot/Custom) so the prefix tells Sam which voice is talking. See feedback_claude_to_sam_channels. |
| Push BOS code | cd HookStreet-Business-OS/sheets && clasp push |
| Push command-inbox code | cd command-inbox && clasp push --force |
| Trigger registry audit | Run auditTriggers_() in Apps Script editor (start-here.gs) — logs every trigger across the project |
| Test notify channel | Run testNotifyOwner() in Apps Script editor — sends self-test via Telegram (preferred) → falls back to Twilio SMS |
| Force-clean a bad commit | git reset --soft HEAD~1 → unstage → re-stage explicit files → recommit → git push --force-with-lease origin master |
NEVER do
- ❌
git add -Ain this workspace (sweeps screenshots + transcripts). Always specify files. - ❌ Hard-delete files (
rm,rm -rf). Usemv → archive/graveyard/<date>_<name>/. - ❌
clasp redeployon Web App deployments — strips the Web App entry. Use UI: Manage Deployments → New version → Deploy. - ❌ Commit raw screenshots, mortgage proof PNGs, or transcripts. Gitignored already; don't fight the ignore.
- ❌ Default new repos to public. Default PRIVATE.
- ❌ Skip the
.remember/now.mdread at session start.
Channels Sam uses to reach the engine
| Surface | Path | Auth | Inbound? | Outbound? |
|---|---|---|---|---|
| iOS Shortcut | → Apps Script Web App | INBOX_SECRET token in body | ✅ | ✅ (display text in Shortcut UI) |
PWA (start-here.html) |
→ Apps Script Web App | INBOX_SECRET stored in localStorage | ✅ | ✅ (in-page response) |
PWA (obligations.html → pwa-deploy/) |
→ Apps Script (different endpoint, BOS data) | API key | ✅ (read-only) | N/A |
| Twilio SMS | Claude Code → tg.ps1 → Apps Script → Twilio |
NOTIFY_SECRET (separate from INBOX_SECRET) | ❌ (LevSMS handles inbound but doesn't loop back) | ✅ |
| Telegram bot (2026-05-21 scaffolded, awaiting bot token) | Sam → Telegram → Apps Script webhook OR Claude → tg.ps1 → Apps Script → Telegram API |
chat_id whitelist | ✅ once token + chat ID in Script Properties | ✅ once token in Script Properties |
| Email drafts | mcp__Gmail__create_draft |
OAuth | N/A | ✅ (drafts for Sam to send) |
| Briefing portal | Cloudflare Pages auto-deploys from outputs/ on push |
Cloudflare Access (Google SSO) | ❌ (pull only) | ✅ |
Memory hierarchy I should query
CLAUDE.md(workspace) — mandatory pre-reads enumerated there.claude/projects/.../memory/MEMORY.md(memory index) — match user's topic.remember/now.md— last session-end summaries (auto-generated).remember/recent.md— last 7 daysdocs/CURRENT_STATE.md— canonical open-loops registerdocs/CONTEXT.md— session logdocs/SCOPE_BACKLOG.md— everything parked
What's deferred (Sam-side scaffold work)
- Telegram bot creation — Sam to do via @BotFather. Sets
TELEGRAM_BOT_TOKEN+TELEGRAM_CHAT_IDin Apps Script Script Properties. Engine handles the rest. - Anthropic API key — for Apps Script → Claude API direct calls (always-on layer without Claude Code terminal). Sam to add
ANTHROPIC_API_KEYto Script Properties when ready.