# Manual Test — v0.5.0

## Fresh connect

- [ ] `mach1cli connect cursor` — writes correct config, backs up original
- [ ] Open Cursor, start agent session
- [ ] Agent reads instructions and calls `mem_mcp` first without being told
- [ ] `mem_mcp` returns `{found: false}` on fresh session
- [ ] `find_mount_mcp("fetch a webpage")` mounts fetch, returns tools
- [ ] `call_tool` executes successfully
- [ ] `mach1cli disconnect cursor` — restores original config

## Secrets flow

- [ ] `find_mount_mcp("search github")` returns `needs_credentials: GITHUB_TOKEN`
- [ ] Open Hub UI, navigate to GitHub card, open Environment tab
- [ ] Enter token, click Save — field clears, shows Saved indicator
- [ ] `find_mount_mcp("search github")` now mounts successfully

## Hub UI client tile

- [ ] Client card expands on click
- [ ] MCP Config tab shows correct JSON with real binary path
- [ ] Copy button works
- [ ] Auto-setup button writes config and shows confirmation
- [ ] Rules tab shows instructions text
- [ ] Path hint is correct per client

## CLI

- [ ] `mach1cli config cursor` outputs valid JSON
- [ ] `mach1cli rules cursor` outputs instructions with installed MCP names
- [ ] `mach1cli config vscode` outputs valid JSON
- [ ] `mach1cli config windsurf` outputs valid JSON
- [ ] `mach1cli config opencode` outputs valid JSON
- [ ] `mach1cli list` shows 0 installed (before mach1 starts)

## TTL

- [ ] Mount an MCP, wait or force TTL expiry, `mem_mcp` returns miss
