Doctor: decisions, reply buttons, memory
doctor_actionsThe Doctor actions beside the conversation, as the app does them. Record a decision only when the customer says what they did; change memory consent only when they ask. Delete and forget preview until confirmed; reuse the same commandKey on a retry. decision: GET doctor/messages/{messageId}/decision optional params {beforeRevision}; returns the saved reply reference and responseRevision; record_decision: POST doctor/messages/{messageId}/decision body {messageId, messageDigest, threadId, binding:{ticketId, reportId, history}, expectedRevision, confirmation: SAVE_RESPONSE, decision: followed|changed|skipped|unknown, modifiedTicketId?}; use the exact reference and responseRevision from decision; binding values can be null; subject to the app Doctor action access gate; saved_reply: GET doctor/messages/{messageId}/saved-reply params {messageDigest, threadId, ticketId?, reportId?, historyKind?, historyId?}; omit null bindings, include ticketId with reportId, and send historyKind and historyId together; grade_this: POST doctor/messages/{messageId}/grade-quote app body; compare_books: POST doctor/messages/{messageId}/book-prices app body; revise_ticket: POST doctor/messages/{messageId}/revisions app body; book_check: GET doctor/book-comparisons/{comparisonId}; delete_thread: POST doctor/threads/{threadId}/delete (confirmation DELETE); memory_status: GET doctor/memory; memory_context: GET doctor/memory/context; memory_consent: POST doctor/memory/consent body {enabled, expectedGeneration, confirmation}; use memory_status.generation and ALLOW_HONCHO_MEMORY when enabling or DISABLE_HONCHO_MEMORY when disabling; enabling requires notes memory enabled; memory_forget_all: POST doctor/memory/forget body {expectedGeneration}; use memory_status.generation; confirmed notes remain and vendor erasure can be pending (confirmation FORGET_RECALLED_MEMORY); notes_consent: POST memory/consent body {enabled, expectedGeneration}; use memory_status.generation; the switch controls both notes and automatic Doctor memory, without deleting notes. Confirm the requested change with the customer before a write. A valid write is sent without a separate MCP preview unless the action says otherwise.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>"
},
"name": "doctor_actions"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | The app request body for this action, unchanged. | |
| action | Yes | ||
| params | No | The app query (filters, limit, cursor) for a read. | |
| threadId | No | ||
| messageId | No | ||
| commandKey | No | Writes: one stable key per write, reused on every retry. | |
| comparisonId | No |