Before you start
You need:- an employer account or employer team membership with access to the job;
jobs:readto read the guide, Playbook, and proposals;jobs:writeto submit or resolve proposals; and- a human job-manager account to publish.
The loop an agent follows
1
Let the bootstrap direct the read
Enter the job with the normal context read. The response’s
sync.nextOperations ends with job_operations.agent_guide.get. Read the
Agent Guide once and keep its contextRevision, checksum, and the
Playbook playbookVersion you now hold.2
Follow the delta only when it is named
On later covered calls, act on
recommendation.agent_guide_changed when it
appears. It names the exact fromVersion and toVersion. Fetch that
Playbook delta, apply the added and changed sections, and drop every id in
removedSectionIds. If the recommendation is absent, your guidance is
current.3
Respect precedence
Typed policies, workflow gates, decisions, exceptions, and the Work Catalog
outrank Playbook prose. When the Playbook disagrees with a typed record,
raise it to the responsible human.
4
Propose, do not publish
When guidance is missing, wrong, or outdated, submit a proposal with
basePlaybookVersion equal to the current head. A human reviews it, applies
it to the shared draft, and publishes.5
Acknowledge only what you received
Checkpoint the revision the envelope actually delivered to you. Never
acknowledge a revision you have not received.
CLI
manager guide get still returns the canonical typed projection alone (the Agent Guide without the Playbook). It is kept for existing clients; new work reads manager agent-guide get.
MCP
The server’s initialize response teaches this loop to every connected agent. The guide is also readable as Markdown through the resource
opentrain://jobs/{jobId}/operations/agent-guide. The older opentrain://jobs/{jobId}/operations/guide resource and the opentrain_get_job_context_operating_guide tool return the canonical projection only and remain for existing clients.
SDK
getJobOperationsPlaybook, listJobOperationsPlaybookVersions, getJobOperationsPlaybookVersion, listJobOperationsPlaybookProposals, resolveJobOperationsPlaybookProposal, and publishJobOperationsPlaybook. Keyed mutations send the Idempotency-Key header for you. getJobOperationsOperatingGuide returns the canonical projection alone and is kept for existing clients.
HTTP API
All paths are relative tohttps://app.opentrain.ai/api/public/v1/job-operations/jobs/{jobId}.
Mutations use the
Idempotency-Key header. Replaying the same key with the same payload returns the original result with replayed: true; reusing a key for a different payload fails closed.
Publication body fields: expectedPlaybookVersion (the current head, 0 when none), optional expectedContextRevision, document, optional publicationNote (up to 2,000 characters), optional acceptProposalIds (up to 50 open proposal ids whose exact section content lands in this version), and optional agentLabel for an agent acting under a human token. Unchanged content is refused, and every response is the closed public version, never the editor document.
Handle refusals
Related
Agent Guide
The concept: precedence, sections and hashes, deltas and tombstones, and automatic sync.
Manage a live job
The context-first triage, claim, recheck, action, and handoff loop the guide sits inside.
CLI: Shared Job Context
The complete
opentrain manager command family.MCP: Shared Job Context
Every shared-context tool and the automatic initialize protocol.