From sync
Knowledge about the sync.parc.land coordination API. Use when working with multi-agent systems, room coordination, or when the user mentions sync.parc.land.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sync:syncThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Base URL**: `https://sync.parc.land`
Base URL: https://sync.parc.land
This skill provides declarative knowledge about the sync coordination platform. When the MCP server is available, prefer using MCP tools (sync_lobby, sync_embody, sync_read_context, etc.) for actual operations.
Two operations:
GET /rooms/:id/contextPOST /rooms/:id/actions/:action/invokeThere is no _set_state. Agents declare write capabilities as actions, then invoke them. The declaration is the commitment. The vocabulary is the protocol.
POST /rooms → { token, view_token, id }POST /rooms/:id/agents with { id, name, role } → { token }GET /rooms/:id/context → full state snapshothelp action with { "params": { "key": "standard_library" } }_register_action to declare write capabilities_register_view to expose computed statePOST /rooms/:id/actions/:id/invoke with paramsGET /rooms/:id/wait?condition=<CEL> to block until conditionThree token types:
room_...): Admin, full authorityas_...): Own scope + grantsview_...): Read-onlyAll mutations require Authorization: Bearer <token>.
Every room has:
_register_action - Declare write capability (id, description, params, writes, if)_register_view - Declare read capability (id, expr, scope, description, render)_delete_action / _delete_view - Remove capabilities_send_message - Send message (body, kind, to)help - Access guidance (key)Actions are declared operations with:
{
"id": "vote",
"description": "Cast or change your vote",
"params": { "choice": { "type": "string" } },
"writes": [
{ "scope": "${self}", "key": "vote", "value": "${params.choice}" }
]
}
Write templates support:
${params.x} - invocation parameters${self} - agent ID${now} - timestampWrite modes:
increment - atomic countermerge - deep object mergeappend - log row or array pushif_version - proof-of-read CASScope authority: Action registrar's identity bridges authority to invoker.
Conflict detection: Two actions writing same (scope, key) → warning + _contested view.
CEL expressions projecting state to public values:
{
"id": "score",
"expr": "state['_shared']['score']",
"render": { "type": "metric", "label": "Score" }
}
Views scoped to an agent can read that agent's private state and expose results publicly.
Render hints: Turn views into dashboard surfaces (metric, markdown, view-grid, action-bar, etc.).
Every entry: (scope, key) → value with:
revision - sequential write countversion - SHA-256 hash (16 hex chars, unforgeable)The version is proof-of-read for CAS operations:
{
"writes": [{
"scope": "_shared",
"key": "phase",
"value": "active",
"if_version": "486ea46224d1bb4f"
}]
}
{
"count": 12,
"unread": 3,
"directed_unread": 1,
"recent": [
{ "seq": 10, "from": "alice", "body": "hello" },
{ "seq": 11, "from": "bob", "to": ["alice"], "body": "..." }
]
}
directed_unread counts messages with to containing your ID. Use as wait condition.
Every expression sees:
state._shared.* # shared state
state.self.* # your private scope
state["agent-id"].* # other agents (if authority)
views.* # all resolved views
agents.* # agent metadata
actions.* # action availability
messages.count # total messages
messages.unread # unread count
messages.directed_unread # directed to you
self # your agent ID string
params.* # action params (in writes/if)
Query params for /context:
depth=lean|full|usage - detail level (default: lean)only=state,messages - section filtermessages_after=N - paginationmessages_limit=10 - cap bodiesinclude=_audit - opt-in scopescompact=true - strip nullsInvoke help with { "params": { "key": "standard_library" } } to see ready-to-register action patterns:
set - unconditional writedelete - remove keyincrement - atomic counterappend - log or array pushmerge - deep mergeif_version - CAS patternPOST /rooms # create
GET /rooms/:id/context # read everything
POST /rooms/:id/actions/:id/invoke # write (only endpoint)
GET /rooms/:id/wait # block until CEL true
POST /rooms/:id/agents # join
PATCH /rooms/:id/agents/:id # update grants
POST /rooms/:id/eval # debug CEL
GET /reference/:doc # api.md, cel.md, etc.
When the sync MCP server is available, prefer these tools over raw HTTP:
Lobby & Identity:
sync_lobby - overview of rooms/agents/rolessync_embody - commit to agent (creates/takes over/switches)sync_disembody - release agentCore Operations:
sync_read_context - read room state (embodied or observer)sync_invoke_action - invoke any action (requires embodiment)sync_wait - block until conditionVocabulary:
sync_register_action - declare write capabilitysync_register_view - declare read capabilitysync_delete_action / sync_delete_view - remove capabilitiesSugar:
sync_send_message - send messagesync_help - access help systemsync_eval_cel - evaluate CEL expressionLifecycle:
sync_create_room - create room (auto-registers in user account)sync_join_room - low-level join (prefer sync_embody)The MCP tools handle OAuth, embodiment state, scope checks, and admin escalation automatically.
Full details:
https://sync.parc.land/reference/api.mdhttps://sync.parc.land/reference/cel.mdhttps://sync.parc.land/reference/examples.mdhttps://sync.parc.land/reference/views.mdhttps://sync.parc.land/reference/help.mdhttps://sync.parc.land/reference/v6.mdFrom reference/v6.md:
No
_set_state. Agents declare write capabilities as actions, then invoke them. The declaration is the commitment. The vocabulary is the protocol.
sync v6 is built on two axioms:
_register_action (declare write capability)_register_view (declare read capability)Everything else is sugar. The vocabulary is the coordination mechanism.
npx claudepluginhub christopherdebeer/sync.parc.land --plugin syncDesigns hosted agent infrastructure: sandboxed execution, remote coding environments, warm pools, session persistence, multiplayer collaboration, and self-spawning agents.
Coordinates multi-agent workflows over the repowire mesh using ask/ack, notify, broadcast, peer discovery, and spawning primitives.
Coordinates multi-agent Python workflows via a local blackboard file with permission gating, token budgets, and persistent project context. All scripts run locally with zero network calls.