> model_context_protocol_

Your agent ↔ VibeMon
Two-way.

Hook lets VibeMon watch what your AI coding agent does. MCP lets your agent operate VibeMon back — create TODOs, mark them done, comment, fan-out @mentions. All from natural language inside Claude Code, Cursor, or any MCP client.

EXISTING · OBSERVATION

Hook (notify.sh / notify.py)

  • VibeMon watches your agent
  • signals.bash.category, file_path, tool_name
  • Fires on every tool_use / prompt / stop
  • Already installed via curl install.sh

NEW · CONTROL

MCP server (HTTP)

  • Your agent operates VibeMon
  • 8 tools — todo CRUD + team queries
  • tools/call → INSERT/UPDATE/SELECT
  • install.sh registers it automatically

SECTION 01 — QUICK START

Get an API key

Install VibeMon on your phone to generate a vbm_* API key, then log in here to see install commands prefilled with your key.

vbm_YOUR_KEY

Log in to see your real key inline — otherwise replace vbm_YOUR_KEY in the commands below.

SECTION 02 — INSTALL

Add VibeMon to your agent

If you already ran curl install.sh | sh, MCP is registered automatically alongside Hooks — nothing else to do. The tabs below show the manual equivalents.

claude mcp add
claude mcp add --transport http vibemon https://vibemon.dev/api/mcp \
  --header "Authorization: Bearer vbm_YOUR_KEY"

Adds a server entry to ~/.claude.json under mcpServers.vibemon. Restart Claude Code (or reload the window) for it to load tools.

SECTION 03 — TEST CONNECTION

Smoke test

Confirm your key reaches /api/mcp end-to-end. We send initialize + tools/list and report what the server replied.

SECTION 04 — TOOL CATALOG — 8

What your agent can do

todo_list

List open TODOs across your teams. Filter by status / assignee=self / due.

{ team_id?, status?, assignee?, due?, limit? }
todo_create

Create a new TODO. Caller becomes created_by.

{ team_id, title, description?, priority?, assignee?, due_date?, tags? }
todo_update

Update any subset of fields by id or 8-char prefix.

{ id_or_prefix, status?, priority?, progress?, assignee?, due_date?, title?, description? }
todo_complete

Shortcut for status=done. Marks the TODO complete and notifies watchers.

{ id_or_prefix }
todo_archive

Soft-delete (sets archived_at).

{ id_or_prefix }
todo_comment_add

Add a comment. @username triggers mention notifications + auto-watcher.

{ id_or_prefix, body }
team_list

List teams you belong to.

{}
team_members

List members of a team (caller must be a member).

{ team_id }

Slime / wallet / live-coders tools land in v2. Today's 8 cover the TODO loop end-to-end.

SECTION 05 — TROUBLESHOOTING

When something goes wrong

ERROR401 invalid_token

When: 응답: { error: "invalid_token", error_description: "No authorization provided" }

Fix: Bearer 헤더 누락 또는 vbm_ prefix 가 아닌 키. ~/.claude.json 또는 ~/.cursor/mcp.json 의 Authorization 헤더 확인. 키 회전 시 `curl install.sh | sh` 재실행으로 자동 갱신.

ERROR403 forbidden_origin

When: 브라우저에서 호출 시 (제3자 도메인)

Fix: MCP 서버는 vibemon.dev / *.vercel.app / localhost 만 origin 허용 (DNS rebinding 방어). MCP client 는 보통 Origin 안 보내므로 무관 — 브라우저 자바스크립트로 직접 호출하는 경우만 발생.

ERRORambiguous_prefix

When: 응답: { error: "ambiguous_prefix", candidates: [...] }

Fix: 8자 prefix 가 같은 팀 안에서 2개 이상 todo 와 매칭. candidates 배열에서 정확한 id 골라서 재호출. UUID 전체를 쓰면 항상 unique.

ERRORforbidden_team

When: 본인이 멤버 아닌 팀에 todo_create / team_members

Fix: team_list 로 본인이 속한 팀 ID 확인. 다른 팀 todo 는 visible 도 아니고 mutate 도 불가 (per-member opt-in invariant).

ERRORno_teams

When: todo 도구 호출 시 caller 가 어떤 팀에도 속하지 않음

Fix: VibeMon 앱에서 팀 가입 또는 생성. 1인 팀 가능. mate_code 입력으로 1:1 팀 자동 생성도 됨.