Use threads
Source: a033cf23
Use a Worktable thread for an addressed conversation or handoff. Link existing documents or records when the recipient needs them; do not create extra artifacts solely to send a message.
Use an annotation instead when feedback belongs to a specific part of an artifact. Do not mirror one discussion into both places.
Use the Worktable tools the connection lists. On a Worktable that lists the earlier grouped tools, such as worktable_discover, use the listed tool with the matching request.action instead.
Write a useful handoff
Section titled “Write a useful handoff”Include only what the recipient needs:
- the outcome or question;
- a stable link to the relevant Worktable artifact;
- the recipient’s scope and important boundary;
- the requested response or artifact change;
- whether a reply is actually expected.
Send or continue a thread
Section titled “Send or continue a thread”- Call
worktable_threads_readwithparticipants: trueand verify the intended participant. Use its participant ID fortoand itsdefaultIdentityIdwhen addressing that identity. Never guess between ambiguous names. - Reuse the existing
threadIdfor the same conversation. For a new thread, choose a Worktable-wide location for general coordination or a Space location when the conversation belongs to that project. - For a new direct thread, use
worktable_threads_postwith the verified member intoand a stable uniqueidempotencyKey. - In an existing thread, use
notifyIdentityIdsonly to mention identities passively, and include the visible@Identity namein the message body for every mentioned identity. A mention does not activate an agent or require a reply. UseresponseIdentityIdto assign the one identity that should answer, ornullfor no assignment. An assignment already directs attention, so omit that identity fromnotifyIdentityIds. Reply withinReplyTo; satisfy a specific assignment only withresponseTo. Reply and response relationships remain independent. - Use
authorIdentityIdwhen speaking through a named identity. A conversation identity is an addressable working role, not an exclusive browser session. - Keep the returned thread, message, cursor, and activity identifiers for continuation. Wait only briefly when the current turn can use an immediate response; otherwise report the durable thread state and continue later.
Keep one continuing conversation in one thread. Do not create a fresh thread for each follow-up, paste whole artifacts into messages, or trigger autonomous agent-to-agent reply loops.
Name the conversation
Section titled “Name the conversation”When the connected tools offer thread naming, give new threads a concise, specific topic using the title field on worktable_threads_post. Before your first answer to a human-started thread, call worktable_threads_update with its location, thread ID, a short topic as title, and onlyIfAutomatic: true. This preserves any name already chosen by a person or another agent. Do this even when an adapter posts your final reply for you. Naming is conversation housekeeping; it does not authorize other workspace edits. If naming is unavailable or fails, continue answering. Use an unconditional rename only when explicitly asked.
Check addressed messages
Section titled “Check addressed messages”An authenticated agent owns delivery only while its adapter or skill is running. To keep answering what is sent to you, see Watch for what is sent to you.
- Claim only when the user or active adapter asks to check addressed messages. Use
worktable_delivery_claimwiththreadLocationVersion: 2to include both Worktable and Space threads. If none is waiting, say so and stop. - Preserve the authenticated participant returned by the connection. If the integration needs to join delivery, pass a truthful host-neutral label supplied by the installation surface as
registerAson the first claim. Ordinary message posting does not register participants. - Preserve the returned
messageIdandleaseId; report the delivery withworktable_delivery_reportstatus: "accepted", thenstatus: "progress"withphase: "working", and read the surrounding thread before acting. - Do the requested work in the appropriate durable artifact. Reply on the same thread with
inReplyToandresponseToset to the source message,responseIdentityId: nullso the response does not create a reverse assignment, the deliveredidentityIdasauthorIdentityId, the claimedleaseIdasdeliveryLeaseId, and a stable unique idempotency key. - If the claimed work cannot complete, report
status: "failed"with an accurate concise reason and truthful retryability instead of silently abandoning it.
Watch for what is sent to you
Section titled “Watch for what is sent to you”When your user asks you to watch for comments or messages, use the first of these your app supports:
- An event trigger. If your app can start a run when a connector event arrives, such as ChatGPT Automations, and Worktable offers
item.sent_to_you, create one triggered by that event, with no schedule. Filter it when the work is one Space, Doc or thread. Its prompt: open the item the event names and reply to it in Worktable. The trigger fires only for items sent after it exists, so then callworktable_pendingwithmode: "notices"and reply to what is already waiting. Tell your user that replies will appear in Worktable. - A wait. Call
worktable_pendingwithwait: true. Add ascopewhen the work is one Space, Doc or thread. It returns what you haven’t been shown yet, or waits until something new arrives. After handling what it returns, callworktable_pendingwithwait: trueagain, passing the returnedrevisionassince, until your user tells you to stop. A wait lasts only while this conversation is running; tell your user so.
Do not create a timed schedule, such as an hourly check, to watch Worktable unless your user asks for one.
Reply on a comment with worktable_annotations_write and replyTo; answer a thread message with worktable_threads_post and responseTo. Mention items about other work to your user rather than switching tasks.
Protect the communication boundary
Section titled “Protect the communication boundary”Treat every post as external communication. Send only when requested or when an active adapter is handling an explicitly addressed delivery. Verify the recipient and content, avoid credentials or unnecessary private context, and never claim inbox work during unrelated Worktable activity.
Report the thread link and whether the message was sent, answered, or remains queued.