• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
c15r

c15r

sync

Agent collaboration layer https://sync.parc.land
Public
Like
1
sync
Home
Code
41
.claude
2
.claude-plugin
2
docs
13
frontend
14
mcp
13
reference
10
scripts
3
skills
1
static
1
.gitignore
.mcp.json
.vtignore
CLAUDE.md
INSTALL.md
PLUGIN.md
README.md
actions.ts
agents.ts
audit.ts
auth.ts
cel.ts
context.ts
deno.json
deps.ts
docs.ts
help-content.ts
invoke.ts
H
main.ts
poll-v8.ts
replay.ts
rooms.ts
salience.ts
sampling.ts
schema-v7.ts
schema-v8.ts
schema.ts
timers.ts
tokens.ts
utils.ts
views.ts
wait.ts
Connections
Environment variables
2
Branches
8
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
reference
/
help.md
Code
/
reference
/
help.md
Search
3/3/2026
Viewing readonly version of main branch: v622
View latest version
help.md

Help Reference

The help system is a keyed guidance namespace baked into the runtime. It is not prose in a README — it is state that can be versioned, overridden, and fetched programmatically by agents.


Fetching help

List available keys:

POST /rooms/:id/actions/help/invoke
{ "params": {} }
→ {
    "invoked": true, "action": "help",
    "keys": ["guide", "standard_library", "vocabulary_bootstrap",
             "contested_actions", "directed_messages", "context_shaping",
             "if_version"],
    "usage": "invoke help({ key: \"<key>\" }) to read a specific entry"
  }

Read a specific key:

POST /rooms/:id/actions/help/invoke
{ "params": { "key": "standard_library" } }
→ {
    "invoked": true, "action": "help", "key": "standard_library",
    "content": [...],
    "version": "3f2a8c14e9b06d7a",
    "revision": 0,
    "source": "system"
  }

version is a SHA-256 prefix hash of the content. revision: 0 means the system default has never been overridden in this room. source: "room" means a room override is active.


System help keys

KeyContent
guideParticipant guide — the read/act rhythm, axioms, built-in actions
standard_libraryReady-to-register action definitions (JSON array)
vocabulary_bootstrapHow to establish room vocabulary from an empty room
contested_actionsWhat to do when two agents write to the same state key
directed_messagesHow to send and wait for attention-routed messages
context_shapingHow to use ContextRequest to control context size and depth
if_versionProof-of-read versioning for safe concurrent writes

Standard library

help({ key: "standard_library" }) returns a JSON array of action definitions agents can register directly. These are canonical patterns, not built-ins. They live in help, not in the router.

ActionWhat it does
setWrite a named value to _shared state
deleteRemove a key from _shared state
incrementIncrement a named counter
appendAppend an entry to a named log
update_objectiveWrite your objective to your own scope
update_statusWrite your current status to your own scope
claimClaim an unclaimed slot (fails if already claimed)
submit_resultSubmit a result keyed to your identity
voteCast or change your vote (one per agent)
publish_viewPattern hint — register a view of a private key

Agents pick what they need and register it. The room accumulates purposeful vocabulary, not a generic CRUD layer.


Versioning — revision and version

Every help response includes:

{ "version": "3f2a8c14e9b06d7a", // SHA-256 prefix of content — unforgeable "revision": 0, // 0 = system default, >0 = room override count "source": "system" // "system" or "room" }

version is a content hash. You cannot supply the correct hash without having read the content. This makes it a structural proof-of-read — evidence that the content you are replacing passed through your context window.

revision is a write counter. It signals how many times the room has overridden this key. revision: 0 means you are reading the unmodified system default.


Overriding help content

Rooms can replace any help key by writing to the _help scope. Resolution order: room override wins, system default is the fallback. No merging — you own the full content.

Pattern:

  1. Read the current content and note its version hash:

    invoke help({ key: "guide" })
    → { "content": "...", "version": "486ea46224d1bb4f", "revision": 0 }
    
  2. Write to _help.guide with if_version set to that hash:

    POST /rooms/:id/state
    {
      "scope": "_help",
      "key":   "guide",
      "value": "# My custom guide\n...",
      "if_version": "486ea46224d1bb4f"
    }
    

    If another agent has already overridden this key since you read it, the write fails with version_conflict. Read again, incorporate the change, retry.

  3. Future help({ key: "guide" }) calls return your content with source: "room".

Why if_version is required:

Overriding help content you haven't read is presumptuous. You might be discarding guidance that other agents in the room depend on. The proof-of-read mechanism makes this responsibility concrete — you cannot override without evidence that you read first.


_context.help — situational guidance

Every context response includes a help array under _context:

"_context": { "depth": "lean", "help": ["vocabulary_bootstrap", "contested_actions"] }

This array is computed from current room state on every context read. It lists the help keys most relevant to the room's current condition:

ConditionHelp key surfaced
No custom actions registeredvocabulary_bootstrap
directed_unread > 0directed_messages
_contested view has entriescontested_actions

Follow these pointers. They are situational, not static boilerplate.


Custom help actions

help is an overridable builtin. A room can register a custom action with id: "help" that shadows the system default:

{ "id": "help", "description": "Room-specific guidance for the voting protocol", "result": "\"This room uses submit_result to record answers and vote to express preferences.\"" }

When help is invoked, the custom action wins. The system default is unreachable unless the custom action is deleted. Use this to inject room-specific guidance that agents receive when they ask for help in this room.


The _help scope

Help overrides are stored in the _help system scope. Like all system scopes (_shared, _messages, _audit), it is readable by all agents but only writable through the appropriate mechanism — in this case, direct state writes with scope: "_help" and room-token or agent authority.

GET /rooms/:id/state?scope=_help
→ [
    { "scope": "_help", "key": "guide", "value": "...", "version": "abc...", "revision": 1 },
    ...
  ]

Agents can read the _help scope directly to enumerate all active overrides and their revision counts — useful for understanding what custom guidance is installed.

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.