Remote Team MCP, not personal stdio
awr-mcp. Do not treatawr team commandplaceholders as a live remote transport (team-access.md).WS-024 adapter id:
claude_code(not auto-startable). Capability summary: claude-code-agent.md.
Prerequisites
From the operator: member handoff — HTTPS MCP URL, personal bearer claim, and repo.
Merge examples/team-mcp-deploy/clients/claude_code.mcp.json.example into Claude Code's MCP config (user or project). Bearer via env / headers only.
Start Claude Code yourself (AWR will not launch it). Confirm the Team MCP server lists awr_team_query and awr_team_command.
Tools
Same Team surface as Codex. Arguments are production WorkstreamQuery / WorkstreamCommand JSON (deny_unknown_fields): query fields are top-level (no args wrapper); commands require the full precondition envelope plus op-specific args. See team-mcp-codex-cli.md for the complete reusable envelopes — copy values from an authorized work.prepare before the first mutation.
| Tool | Use |
|---|---|
awr_team_query | capabilities, work/session/claim reads, controlled content |
awr_team_command | session / claim / execution / delivery / rework / complete |
Use a stable request_id. Prefer command.inspect / planning.outcome on uncertainty before retrying with a new id.
Natural workflow
1. Query
Call awr_team_query with:
{"protocol_version":1,"op":"capabilities"}
then list/search on your authorized stream (top-level fields):
{"protocol_version":1,"op":"work.list","workstream_id":"00000000000000000000000001","limit":20}
{"protocol_version":1,"op":"work.search","workstream_id":"00000000000000000000000001","search":"alpha","limit":20}
Only claim work you can see.
2. Prepare, then session / claim
work.preparefor the chosenwork_id(fills the command envelope).session.startwithconversation_idlikeclaude:<native-session-id>.claim.acquirewith session + expected work/session versions and TTL.claim.renewon the active fence/lease before expiry.claim.inspectwhen unsure — do not interpret an acquire replay as renew.
Example prepare + session.start envelopes:
{
"protocol_version": 1,
"op": "work.prepare",
"workstream_id": "00000000000000000000000001",
"work_id": "API-1",
"max_context_bytes": 120000
}
{
"protocol_version": 1,
"request_id": "00000000-0000-4000-8000-000000000011",
"op": "session.start",
"workstream_id": "00000000000000000000000001",
"work_id": "API-1",
"coordinator_epoch": "epoch-a",
"expected_project_revision": "3",
"expected_authority_version": "1",
"expected_ownership_version": "1",
"expected_contract_hash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"args": {"conversation_id": "claude:<native-session-id>"}
}
Bind external session labels with L0 habits from claude-code-agent.md (claude:<native-id>), but perform coordination on Team tools above.
3. Context
Re-run work.prepare when the read set may have moved. Read required_specs and authorized_readable_refs. Fetch bodies only through source.content / artifact.content.
4. Checkpoint
session.checkpoint with the consumed context_hash, concrete next_action, and open_loops inside a full command envelope:
{
"protocol_version": 1,
"request_id": "00000000-0000-4000-8000-000000000012",
"op": "session.checkpoint",
"workstream_id": "00000000000000000000000001",
"work_id": "API-1",
"coordinator_epoch": "epoch-a",
"expected_project_revision": "5",
"expected_authority_version": "1",
"expected_ownership_version": "1",
"expected_contract_hash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"args": {
"session_id": "<id>",
"expected_session_version": "1",
"context_hash": "<hash from prepare you actually consumed>",
"next_action": "Implement filtered query API",
"open_loops": ["Await schema review"]
}
}
Closing Claude Code or the MCP transport does not end the durable Team session — use session.end or an authorized handoff.
5. PR link
Develop in your git checkout of the handed repo. After opening the PR, register facts with a full command envelope:
{
"protocol_version": 1,
"request_id": "00000000-0000-4000-8000-000000000013",
"op": "delivery.register_pr",
"workstream_id": "00000000000000000000000001",
"work_id": "API-1",
"coordinator_epoch": "epoch-a",
"expected_project_revision": "6",
"expected_authority_version": "1",
"expected_ownership_version": "1",
"expected_contract_hash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"args": {
"session_id": "<id>",
"expected_session_version": "2",
"repository": "originoneai/example",
"pr_number": 1,
"pr_url": "https://github.com/originoneai/example/pull/1",
"head_sha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"fact_source": "authorized_human_github_verification",
"observed_at": "2026-09-23T04:00:00+08:00"
}
}
Then evidence.submit / review.open / delivery.submit_and_request_review as authorized. See pr-delivery-review.md. GitHub UI state is not AWR completion.
6. Rework
On review.return, author runs work.rework, fixes the head, notifies with delivery.observe_pr (expected_head_sha), and requests a fresh review round. Retained history keeps failed/rejected rounds.
7. Complete
Eligible independent person: review.accept / review.decide. Maintainer: delivery.finalize / work.complete. Agents of the same person are not team-independent reviewers.
Host adapter note
claude_code supports status / reconnect / forensics only when backed by attributable observation; start and stop_confirmation return human continuation. Prefer reconnecting the same execution identity before starting anything new (named-agent-host.md).
