{
"error": "Forbidden: token holds no claim for the requested account"
}
{
"error": "Forbidden: token holds no claim for the requested account"
}
{
"error": "Forbidden: token holds no claim for the requested account"
}
{
"error": "Forbidden: token holds no claim for the requested account"
}
{
"error": "Forbidden: token holds no claim for the requested account"
}
Agents
Propose an agent edit
First step of a safe two-step edit — nothing is written yet. Send anchored edits (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value config/name/description keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. config takes the agent’s config keys DIRECTLY — never nested under configurable. At least one of edits, config, name or description must carry a change. Returns : review the diff line by line — especially - lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.
POST
/
v1
/
tenants
/
{tenant}
/
assistants
/
{id}
/
propose-edits
Propose an edit (diff preview + confirmation token)
Every write to an agent’s config, name, or description goes through two calls: a
propose that previews the exact change as a diff and mints a confirmation
token, and a confirm that sends the token back and applies exactly what was
previewed — nothing else. This section walks through one complete round trip
for an edit; proposeAssistantCreate
and confirmAssistantCreate
follow the same shape for creating a new agent.Draft-first, always. Both pairs only ever write to a draft agent. A
published agent answers proposeAssistantEdits with 409 DRAFT_REQUIRED — you
cannot edit production directly. If the published agent already has a paired
draft, the error names it (metadata.draftAssistantId); otherwise, create one
by calling proposeAssistantCreate/confirmAssistantCreate with
metadata.productionAssistantId set to the published agent’s id (same
deployment, same tenant). That anchors the new draft to it, which is how you
stage a change to a live agent. Publishing the draft to production is a human
action in the ClaudIA app — no public endpoint does it.
Send the change: one or more anchored edits (each replacing a verbatim
excerpt of existing text), whole-value config/name/description keys, or
both.
Request
POST /claudia/v1/tenants/acme/assistants/asst_9f2a.../propose-edits?role=react{ "edits": [ { "path": "config.tone_of_voice_prompt", "old_string": "Always answer in a formal, corporate tone.", "new_string": "Answer warmly and use the customer's first name when known." } ]}
The response previews the write and never applies it:
Response
{ "message": "THESE ARE THE CHANGES YOU ARE ABOUT TO APPLY — REVIEW the diff (git unified format) LINE BY LINE, paying special attention to lines starting with `-` (removals). If they are correct, confirm by calling confirmAssistantEdits with just confirmationId=... and If-Match=...", "diff": "--- current\n+++ proposed\n@@ -4,7 +4,7 @@\n model_name: gpt-4o\n system_prompt: You are ClaudIA, a customer support agent for Acme.\n tenant: acme\n- tone_of_voice_prompt: Always answer in a formal, corporate tone.\n+ tone_of_voice_prompt: Answer warmly and use the customer's first name when known.\n tools: []\n deployment_role: react\n updated_at: 2026-08-20T14:03:11.482Z", "confirmationId": "8f0c8e2a1e6b4a6e9c1a2f7d3b8e9c10", "baseUpdatedAt": "2026-08-20T14:03:11.482Z"}
diff is a unified diff (--- current / +++ proposed) computed over the
whole assistant, not just the field(s) you touched: both sides are
rendered as sorted key: value lines (two spaces per nesting level, long
prompts as block scalars) and diffed, so neighboring fields show up as
context lines around your change — as in the example above, where
model_name/system_prompt/tenant and tools/deployment_role/updated_at
frame the one line that actually changed. Read it line by line, paying special
attention to - lines — those are what disappears. Nothing has been written
yet: if the diff looks wrong, discard it and send a corrected proposeAssistantEdits
call instead of confirming.
Send back onlyconfirmationId, plus baseUpdatedAt as the If-Match
header. No other body field is read — the server replays the exact proposal it
stored server-side.
Request
POST /claudia/v1/tenants/acme/assistants/asst_9f2a.../confirm-edits?role=reactIf-Match: 2026-08-20T14:03:11.482Z{ "confirmationId": "8f0c8e2a1e6b4a6e9c1a2f7d3b8e9c10"}
The 200 response is the persisted agent, in the same shape getAssistant
returns — including the same stub on long prompt fields. You already authored
the new text in step 1, so it is not echoed back in full; read it again with
readAssistantText if you need it.
If confirmationId no longer resolves — the proposal’s TTL expired — the 404
names PROPOSAL_NOT_FOUND and coaches re-running proposeAssistantEdits with
the same body. Unlike the create pair, an edits confirm is not consumed on
success: retrying the exact same confirm after it already applied does not
404. Its own write moved updated_at, so the retry’s If-Match is now stale
against the current agent and it fails the same way any other stale confirm
does — 412 STALE_PRECONDITION. If you see that, re-read the agent with
getAssistant first: the change may already be applied, in which case there
is nothing left to do; only propose again if it genuinely is not there.
Tenant whose agents you are managing. Discover the tenants your credentials cover with listMyClaudiaProjects. A tenant your credentials do not cover is indistinguishable from one that does not exist.
Deployment the assistant lives in: supervisor (orchestrator agents) or react (specialist agents), plus qna for knowledge-base Q&A agents. Read them with that role; they are CREATED through proposeAssistantCreate as deployment: react with graphId: qna_agent, and the platform derives the qna role from the graph. listAssistants returns it as deployment_role on each row — pass that value back here verbatim. A qna agent follows the same draft rule as any other: only a draft accepts writes, and a published one answers 409 naming its draft.
Available options:
supervisor,
react,
qna
Body
application/json
The change to apply: anchored edits, whole-value keys, or both.
Anchored text edits and/or whole-value patch keys; at least one of edits, config, name or description must carry a change.
Whole-value config edit: the agent's config keys DIRECTLY (flat, no configurable wrapper) for everything you are NOT editing with anchors (mcp_servers, agents, reasoning_effort, …). A field targeted by edits must NOT also appear here. Send it as a JSON OBJECT — never as a JSON-encoded string.
The anchored replacements to apply, in order — each one sees the previous one's result. Every entry must target a text field (config.system_prompt, config.tone_of_voice_prompt, description) and match an excerpt that occurs exactly once. Omit it when the change is whole-value only.
Show child attributes
Response
The confirmation contract: message (review + confirm instructions), diff (git unified format), confirmationId and baseUpdatedAt — send the latter back as If-Match on confirmAssistantEdits.
The response is of type object.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Cloud Chat","colors":{"primary":"#EF7221","light":"#FF9D5C","dark":"#D65E10"},"logo":{"light":"https://mintcdn.com/cloud-humans/GHbxWTY81Qa4762I/logo/light.svg?fit=max\u0026auto=format\u0026n=GHbxWTY81Qa4762I\u0026q=85\u0026s=2899d32cd5c5f8adff5bb4390125f626","dark":"https://mintcdn.com/cloud-humans/GHbxWTY81Qa4762I/logo/dark.svg?fit=max\u0026auto=format\u0026n=GHbxWTY81Qa4762I\u0026q=85\u0026s=95d8350f3dade95801b6c310d5ba597f"},"favicon":"https://mintcdn.com/cloud-humans/T7XxBi09ex74abIC/favicon.svg?fit=max\u0026auto=format\u0026n=T7XxBi09ex74abIC\u0026q=85\u0026s=6b1379d1ea0f266d6ca12eb1f8ccbf77","fonts":{"family":"Inter"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloud-humans","hasAudioNarration":false,"actualSubdomain":"cloud-humans","customDomains":["docs.cloudhumans.com"],"gitSource":{"type":"github","owner":"cloudhumans","repo":"dev-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeb98e7c89be31069aa9e0d","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"API Reference","count":122},{"language":"default","tag":"Cloud Chat","count":80},{"language":"default","tag":"Claudia","count":61},{"language":"default","tag":"Guides","count":31},{"language":"default","tag":"Data Export","count":27},{"language":"default","tag":"Table Catalog","count":19},{"language":"default","tag":"Agents","count":18},{"language":"default","tag":"Help Center","count":15},{"language":"default","tag":"Knowledge Base Content","count":9},{"language":"default","tag":"Conversations","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/claudia/endpoints/propose-assistant-edits","slug":"/api-reference/claudia/endpoints/propose-assistant-edits","pageMetadata":{"title":"Propose an agent edit","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants/{id}/propose-edits","description":"First step of a safe two-step edit — nothing is written yet. Send anchored `edits` (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value `config`/`name`/`description` keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. `config` takes the agent's config keys DIRECTLY — never nested under `configurable`. At least one of `edits`, `config`, `name` or `description` must carry a change. Returns {message, diff, confirmationId, baseUpdatedAt}: review the diff line by line — especially `-` lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.","href":"/api-reference/claudia/endpoints/propose-assistant-edits"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"First step of a safe two-step edit — nothing is written yet. Send anchored \", _jsx(_components.code, {\n children: \"edits\"\n }), \" (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value \", _jsx(_components.code, {\n children: \"config\"\n }), \"/\", _jsx(_components.code, {\n children: \"name\"\n }), \"/\", _jsx(_components.code, {\n children: \"description\"\n }), \" keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. \", _jsx(_components.code, {\n children: \"config\"\n }), \" takes the agent’s config keys DIRECTLY — never nested under \", _jsx(_components.code, {\n children: \"configurable\"\n }), \". At least one of \", _jsx(_components.code, {\n children: \"edits\"\n }), \", \", _jsx(_components.code, {\n children: \"config\"\n }), \", \", _jsx(_components.code, {\n children: \"name\"\n }), \" or \", _jsx(_components.code, {\n children: \"description\"\n }), \" must carry a change. Returns \", \": review the diff line by line — especially \", _jsx(_components.code, {\n children: \"-\"\n }), \" lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`the-propose-→-confirm-flow`,children:`The propose → confirm flow`}),`\n`,_jsxs(_components.p,{children:[`Every write to an agent’s config, name, or description goes through two calls: a\n`,_jsx(_components.strong,{children:`propose`}),` that previews the exact change as a diff and mints a confirmation\ntoken, and a `,_jsx(_components.strong,{children:`confirm`}),` that sends the token back and applies exactly what was\npreviewed — nothing else. This section walks through one complete round trip\nfor an edit; `,_jsx(_components.a,{href:`/api-reference/claudia/endpoints/propose-assistant-create`,children:`proposeAssistantCreate`}),`\nand `,_jsx(_components.a,{href:`/api-reference/claudia/endpoints/confirm-assistant-create`,children:`confirmAssistantCreate`}),`\nfollow the same shape for creating a new agent.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Draft-first, always.`}),` Both pairs only ever write to a `,_jsx(_components.strong,{children:`draft`}),` agent. A\npublished agent answers `,_jsx(_components.code,{children:`proposeAssistantEdits`}),` with `,_jsx(_components.code,{children:`409 DRAFT_REQUIRED`}),` — you\ncannot edit production directly. If the published agent already has a paired\ndraft, the error names it (`,_jsx(_components.code,{children:`metadata.draftAssistantId`}),`); otherwise, create one\nby calling `,_jsx(_components.code,{children:`proposeAssistantCreate`}),`/`,_jsx(_components.code,{children:`confirmAssistantCreate`}),` with\n`,_jsx(_components.code,{children:`metadata.productionAssistantId`}),` set to the published agent’s id (same\n`,_jsx(_components.code,{children:`deployment`}),`, same tenant). That anchors the new draft to it, which is how you\nstage a change to a live agent. Publishing the draft to production is a human\naction in the ClaudIA app — no public endpoint does it.`]}),`\n`,_jsx(Heading,{level:`3`,id:`1-propose`,children:`1. Propose`}),`\n`,_jsxs(_components.p,{children:[`Send the change: one or more anchored `,_jsx(_components.code,{children:`edits`}),` (each replacing a verbatim\nexcerpt of existing text), whole-value `,_jsx(_components.code,{children:`config`}),`/`,_jsx(_components.code,{children:`name`}),`/`,_jsx(_components.code,{children:`description`}),` keys, or\nboth.`]}),`\n`,_jsx(CodeBlock,{filename:`Request`,numberOfLines:`10`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`POST /claudia/v`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/tenants/acme/assistants/asst_`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`9`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`f`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`a.../propose-edits?role=react`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"edits\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"config.tone_of_voice_prompt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"old_string\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Always answer in a formal, corporate tone.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"new_string\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Answer warmly and use the customer's first name when known.\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The response previews the write and never applies it:`}),`\n`,_jsx(CodeBlock,{filename:`Response`,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:'\"THESE ARE THE CHANGES YOU ARE ABOUT TO APPLY — REVIEW the diff (git unified format) LINE BY LINE, paying special attention to lines starting with `-` (removals). If they are correct, confirm by calling confirmAssistantEdits with just confirmationId=... and If-Match=...\"'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"diff\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"--- current`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`+++ proposed`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@@ -4,7 +4,7 @@`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` model_name: gpt-4o`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` system_prompt: You are ClaudIA, a customer support agent for Acme.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tenant: acme`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`- tone_of_voice_prompt: Always answer in a formal, corporate tone.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`+ tone_of_voice_prompt: Answer warmly and use the customer's first name when known.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tools: []`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deployment_role: react`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` updated_at: 2026-08-20T14:03:11.482Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"confirmationId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"8f0c8e2a1e6b4a6e9c1a2f7d3b8e9c10\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"baseUpdatedAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-08-20T14:03:11.482Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`2-review-the-diff`,children:`2. Review the diff`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`diff`}),` is a unified diff (`,_jsx(_components.code,{children:`--- current`}),` / `,_jsx(_components.code,{children:`+++ proposed`}),`) computed over the\n`,_jsx(_components.strong,{children:`whole assistant`}),`, not just the field(s) you touched: both sides are\nrendered as sorted `,_jsx(_components.code,{children:`key: value`}),` lines (two spaces per nesting level, long\nprompts as block scalars) and diffed, so neighboring fields show up as\ncontext lines around your change — as in the example above, where\n`,_jsx(_components.code,{children:`model_name`}),`/`,_jsx(_components.code,{children:`system_prompt`}),`/`,_jsx(_components.code,{children:`tenant`}),` and `,_jsx(_components.code,{children:`tools`}),`/`,_jsx(_components.code,{children:`deployment_role`}),`/`,_jsx(_components.code,{children:`updated_at`}),`\nframe the one line that actually changed. Read it line by line, paying special\nattention to `,_jsx(_components.code,{children:`-`}),` lines — those are what disappears. Nothing has been written\nyet: if the diff looks wrong, discard it and send a corrected `,_jsx(_components.code,{children:`proposeAssistantEdits`}),`\ncall instead of confirming.`]}),`\n`,_jsx(Heading,{level:`3`,id:`3-confirm`,children:`3. Confirm`}),`\n`,_jsxs(_components.p,{children:[`Send back `,_jsx(_components.strong,{children:`only`}),` `,_jsx(_components.code,{children:`confirmationId`}),`, plus `,_jsx(_components.code,{children:`baseUpdatedAt`}),` as the `,_jsx(_components.code,{children:`If-Match`}),`\nheader. No other body field is read — the server replays the exact proposal it\nstored server-side.`]}),`\n`,_jsx(CodeBlock,{filename:`Request`,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`POST /claudia/v`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/tenants/acme/assistants/asst_`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`9`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`f`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`a.../confirm-edits?role=react`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`If-Match: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2026-08-20`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`T`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`14`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`03`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`11.482`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Z`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"confirmationId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"8f0c8e2a1e6b4a6e9c1a2f7d3b8e9c10\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`4-the-stubbed-echo`,children:`4. The stubbed echo`}),`\n`,_jsxs(_components.p,{children:[`The 200 response is the persisted agent, in the same shape `,_jsx(_components.code,{children:`getAssistant`}),`\nreturns — including the same stub on long prompt fields. You already authored\nthe new text in step 1, so it is not echoed back in full; read it again with\n`,_jsx(_components.code,{children:`readAssistantText`}),` if you need it.`]}),`\n`,_jsx(CodeBlock,{filename:`Response`,numberOfLines:`10`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"assistant_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"asst_9f2a...\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"deployment_role\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"react\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"updated_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-08-20T14:05:47.201Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"config\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"configurable\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"tone_of_voice_prompt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"[59 chars — use readAssistantText]\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`confirmationId`}),` no longer resolves — the proposal’s TTL expired — the 404\nnames `,_jsx(_components.code,{children:`PROPOSAL_NOT_FOUND`}),` and coaches re-running `,_jsx(_components.code,{children:`proposeAssistantEdits`}),` with\nthe same body. Unlike the create pair, an edits confirm is `,_jsx(_components.strong,{children:`not`}),` consumed on\nsuccess: retrying the exact same confirm after it already applied does not\n404. Its own write moved `,_jsx(_components.code,{children:`updated_at`}),`, so the retry’s `,_jsx(_components.code,{children:`If-Match`}),` is now stale\nagainst the current agent and it fails the same way any other stale confirm\ndoes — `,_jsx(_components.code,{children:`412 STALE_PRECONDITION`}),`. If you see that, re-read the agent with\n`,_jsx(_components.code,{children:`getAssistant`}),` first: the change may already be applied, in which case there\nis nothing left to do; only propose again if it genuinely is not there.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Propose an agent edit","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants/{id}/propose-edits","description":"First step of a safe two-step edit — nothing is written yet. Send anchored `edits` (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value `config`/`name`/`description` keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. `config` takes the agent's config keys DIRECTLY — never nested under `configurable`. At least one of `edits`, `config`, `name` or `description` must carry a change. Returns {message, diff, confirmationId, baseUpdatedAt}: review the diff line by line — especially `-` lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.","href":"/api-reference/claudia/endpoints/propose-assistant-edits"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The propose → confirm flow","slug":"the-propose-→-confirm-flow","depth":2,"children":[{"title":"1. Propose","slug":"1-propose","depth":3,"children":[]},{"title":"2. Review the diff","slug":"2-review-the-diff","depth":3,"children":[]},{"title":"3. Confirm","slug":"3-confirm","depth":3,"children":[]},{"title":"4. The stubbed echo","slug":"4-the-stubbed-echo","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Agents"],"summary":"Propose an edit (diff preview + confirmation token)","description":"First step of a safe two-step edit — nothing is written yet. Send anchored `edits` (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value `config`/`name`/`description` keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. `config` takes the agent's config keys DIRECTLY — never nested under `configurable`. At least one of `edits`, `config`, `name` or `description` must carry a change. Returns {message, diff, confirmationId, baseUpdatedAt}: review the diff line by line — especially `-` lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.","operationId":"proposeAssistantEdits","parameters":["20338edd-57a0-43bb-a34e-271053768733","104b0fd9-1915-4026-ab37-c0f6c601c8e7","8d2c849f-b3fd-4771-9bde-e1eb16504bf3"],"requestBody":"8ab2d222-73b8-491f-93e0-3a0499ff61b7","responses":{"200":"ee7acd44-ea83-4cd4-a1cb-b52772816311","400":"b1c56154-a088-4c9b-bbfb-e7b20af37f6a","401":"22602aea-7cb2-41d4-b67f-334977bdbbcb","403":"b035e8bf-a443-462b-92d8-759f8577d6b8","404":"d139fe41-3665-4e99-8b6f-39465a4910a2","409":"dcd4cf6a-3d22-48c7-b355-9caedb6ab2f1","422":"e62eed25-fd9b-4ce6-a0f5-8276a7c4af55","429":"194247ac-64c8-4484-acb9-606f24801e2c"},"method":"post","type":"path","servers":["c0aec4f2-8b51-48f3-a1a2-c54c569eef6f","7b305690-5cbf-401f-bdb9-60cb6f0d0150"],"security":["3a3f0608-7c43-466c-9716-5a09c60a57b8"],"path":"/v1/tenants/{tenant}/assistants/{id}/propose-edits","baseUrlOptions":["https://api.cloudhumans.com/claudia","https://api.cloudhumans.com/claudia/staging"],"title":"Propose an edit (diff preview + confirmation token)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"20338edd-57a0-43bb-a34e-271053768733":{"name":"tenant","in":"path","description":"Tenant whose agents you are managing. Discover the tenants your credentials cover with `listMyClaudiaProjects`. A tenant your credentials do not cover is indistinguishable from one that does not exist.","required":true,"schema":{"type":"string","isRequired":true,"description":"Tenant whose agents you are managing. Discover the tenants your credentials cover with `listMyClaudiaProjects`. A tenant your credentials do not cover is indistinguishable from one that does not exist.","uniqueKey":"","typeLabel":"string"}},"104b0fd9-1915-4026-ab37-c0f6c601c8e7":{"name":"id","in":"path","description":"Assistant to operate on, as returned by listAssistants (`assistant_id` field).","required":true,"schema":{"type":"string","isRequired":true,"description":"Assistant to operate on, as returned by listAssistants (`assistant_id` field).","uniqueKey":"","typeLabel":"string"}},"8d2c849f-b3fd-4771-9bde-e1eb16504bf3":{"name":"role","in":"query","description":"Deployment the assistant lives in: `supervisor` (orchestrator agents) or `react` (specialist agents), plus `qna` for knowledge-base Q\u0026A agents. Read them with that role; they are CREATED through proposeAssistantCreate as `deployment: react` with `graphId: qna_agent`, and the platform derives the `qna` role from the graph. listAssistants returns it as `deployment_role` on each row — pass that value back here verbatim. A `qna` agent follows the same draft rule as any other: only a draft accepts writes, and a published one answers 409 naming its draft.","required":true,"schema":{"type":"string","enum":["supervisor","react","qna"],"isRequired":true,"description":"Deployment the assistant lives in: `supervisor` (orchestrator agents) or `react` (specialist agents), plus `qna` for knowledge-base Q\u0026A agents. Read them with that role; they are CREATED through proposeAssistantCreate as `deployment: react` with `graphId: qna_agent`, and the platform derives the `qna` role from the graph. listAssistants returns it as `deployment_role` on each row — pass that value back here verbatim. A `qna` agent follows the same draft rule as any other: only a draft accepts writes, and a published one answers 409 naming its draft.","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"description":"The change to apply: anchored `edits`, whole-value keys, or both.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New display name. Omit to keep it; it cannot be null or blank.","uniqueKey":"name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"This assistant's routing description. Omit to keep it; a JSON null clears it.","uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","description":"This assistant's routing description. Omit to keep it; a JSON null clears it.","uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"config":{"type":"object","additionalProperties":true,"description":"Whole-value config edit: the agent's config keys DIRECTLY (flat, no `configurable` wrapper) for everything you are NOT editing with anchors (mcp_servers, agents, reasoning_effort, …). A field targeted by `edits` must NOT also appear here. Send it as a JSON OBJECT — never as a JSON-encoded string.","uniqueKey":"config","typeLabel":"object"},"edits":{"type":"array","items":{"type":"object","required":["path","old_string","new_string"],"properties":{"path":{"type":"string","description":"Dotted path to the text field, in the same flat shape as `config`: `config.system_prompt`, `config.tone_of_voice_prompt`, or `description`.","example":"config.system_prompt","isRequired":true,"uniqueKey":"edits.items.[INDEX].path","typeLabel":"string"},"old_string":{"type":"string","description":"The excerpt to replace, copied literally from the current value — including whitespace and line breaks. It must occur EXACTLY ONCE in the field; if it occurs more than once, extend it with the surrounding lines until it is unique (or set replace_all).","isRequired":true,"uniqueKey":"edits.items.[INDEX].old_string","typeLabel":"string"},"new_string":{"type":"string","description":"The replacement text. An empty string deletes the excerpt.","isRequired":true,"uniqueKey":"edits.items.[INDEX].new_string","typeLabel":"string"},"replace_all":{"type":"boolean","description":"Replace EVERY occurrence instead of requiring a unique one. Use it for a rename that recurs on purpose; leave it out for a targeted edit, so a repeated excerpt fails loudly instead of changing the wrong place.","default":false,"uniqueKey":"edits.items.[INDEX].replace_all","typeLabel":"boolean"}},"description":"One anchored text replacement within a propose-edits call.","uniqueKey":"edits.items.[INDEX]","typeLabel":"object"},"description":"The anchored replacements to apply, in order — each one sees the previous one's result. Every entry must target a text field (config.system_prompt, config.tone_of_voice_prompt, description) and match an excerpt that occurs exactly once. Omit it when the change is whole-value only.","uniqueKey":"edits","typeLabel":"object[]"}},"description":"Anchored text edits and/or whole-value patch keys; at least one of `edits`, `config`, `name` or `description` must carry a change.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","description":"\u003cstring>","config":{},"edits":[{"path":"config.system_prompt","old_string":"\u003cstring>","new_string":"\u003cstring>","replace_all":false}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"ee7acd44-ea83-4cd4-a1cb-b52772816311":{"description":"The confirmation contract: `message` (review + confirm instructions), `diff` (git unified format), `confirmationId` and `baseUpdatedAt` — send the latter back as If-Match on confirmAssistantEdits.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"},"b1c56154-a088-4c9b-bbfb-e7b20af37f6a":{"description":"The resolved config fails live schema validation — a rejected field or value.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"What went wrong.","example":"Forbidden: token holds no claim for the requested account","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"description":"Something the caller needs to fix.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Forbidden: token holds no claim for the requested account"}}},"exampleType":"generated"}},"exampleType":"generated"},"22602aea-7cb2-41d4-b67f-334977bdbbcb":{"description":"Missing, expired or invalid credentials.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"b035e8bf-a443-462b-92d8-759f8577d6b8":{"description":"The credentials hold no account allowed to manage this content.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"What went wrong.","example":"Forbidden: token holds no claim for the requested account","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"description":"Something the caller needs to fix.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Forbidden: token holds no claim for the requested account"}}},"exampleType":"generated"}},"exampleType":"generated"},"d139fe41-3665-4e99-8b6f-39465a4910a2":{"description":"The tenant, assistant id, or the project it belongs to is one this token cannot reach — indistinguishable from one that does not exist.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"What went wrong.","example":"Forbidden: token holds no claim for the requested account","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"description":"Something the caller needs to fix.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Forbidden: token holds no claim for the requested account"}}},"exampleType":"generated"}},"exampleType":"generated"},"dcd4cf6a-3d22-48c7-b355-9caedb6ab2f1":{"description":"DRAFT_REQUIRED: this assistant is published and cannot be edited directly. The message names its draft (`metadata.draftAssistantId`) when one already exists, or coaches creating one via proposeAssistantCreate/confirmAssistantCreate otherwise.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"What went wrong.","example":"Forbidden: token holds no claim for the requested account","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"description":"Something the caller needs to fix.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Forbidden: token holds no claim for the requested account"}}},"exampleType":"generated"}},"exampleType":"generated"},"e62eed25-fd9b-4ce6-a0f5-8276a7c4af55":{"description":"A policy violation — including a patch that resolves to no change — or the resolved config references something that does not exist on this tenant: a tool ref, an MCP server id, or a sub-agent.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"What went wrong.","example":"Forbidden: token holds no claim for the requested account","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"description":"Something the caller needs to fix.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Forbidden: token holds no claim for the requested account"}}},"exampleType":"generated"}},"exampleType":"generated"},"194247ac-64c8-4484-acb9-606f24801e2c":{"description":"Rate limit applied by the API gateway. Back off and retry.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"3a3f0608-7c43-466c-9716-5a09c60a57b8":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"c0aec4f2-8b51-48f3-a1a2-c54c569eef6f":{"url":"https://api.cloudhumans.com/claudia","description":"Production"},"7b305690-5cbf-401f-bdb9-60cb6f0d0150":{"url":"https://api.cloudhumans.com/claudia/staging","description":"Staging"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/specs/claudia/v1.json"},"subdomain":"cloud-humans","siteName":"Cloud Chat","title":"Propose an agent edit - Cloud Chat","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-27T22:37:53.010Z","originalFileLocation":"api-reference/claudia/endpoints/propose-assistant-edits.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"First step of a safe two-step edit — nothing is written yet. Send anchored edits (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value config/name/description keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. config takes the agent\u0026#x27;s config keys DIRECTLY — never nested under configurable. At least one of edits, config, name or description must carry a change. Returns {message, diff, confirmationId, baseUpdatedAt}: review the diff line by line — especially - lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Cloud Chat\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Propose an agent edit - Cloud Chat\">\u003cmeta data-mint-head property=\"og:description\" content=\"First step of a safe two-step edit — nothing is written yet. Send anchored edits (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value config/name/description keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. config takes the agent\u0026#x27;s config keys DIRECTLY — never nested under configurable. At least one of edits, config, name or description must carry a change. Returns {message, diff, confirmationId, baseUpdatedAt}: review the diff line by line — especially - lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cloud Chat\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloud-humans.mintlify.site/_mintlify/api/og/v2?division=Agents\u0026amp;title=Propose+an+agent+edit\u0026amp;description=First+step+of+a+safe+two-step+edit+%E2%80%94+nothing+is+written+yet.+Send+anchored+%60edits%60+%28each+replacing+ONE+excerpt+copied+verbatim+from+the+current+text+%E2%80%94+read+it+f\u0026amp;theme=392b44accc8c2ed667834476\u0026amp;signature=89217fcaac29fe1a3e4b7026c0abaae7845ddb79d189bcd471ae3eaceec6d7df\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Propose an agent edit - Cloud Chat\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"First step of a safe two-step edit — nothing is written yet. Send anchored edits (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value config/name/description keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. config takes the agent\u0026#x27;s config keys DIRECTLY — never nested under configurable. At least one of edits, config, name or description must carry a change. Returns {message, diff, confirmationId, baseUpdatedAt}: review the diff line by line — especially - lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloud-humans.mintlify.site/_mintlify/api/og/v2?division=Agents\u0026amp;title=Propose+an+agent+edit\u0026amp;description=First+step+of+a+safe+two-step+edit+%E2%80%94+nothing+is+written+yet.+Send+anchored+%60edits%60+%28each+replacing+ONE+excerpt+copied+verbatim+from+the+current+text+%E2%80%94+read+it+f\u0026amp;theme=392b44accc8c2ed667834476\u0026amp;signature=89217fcaac29fe1a3e4b7026c0abaae7845ddb79d189bcd471ae3eaceec6d7df\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cloud Chat\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EF7221\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/claudia/endpoints/propose-assistant-edits.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cloudhumans.com/#organization\",\"name\":\"Cloud Chat\",\"url\":\"https://docs.cloudhumans.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloud-humans/GHbxWTY81Qa4762I/logo/light.svg?fit=max\u0026auto=format\u0026n=GHbxWTY81Qa4762I\u0026q=85\u0026s=2899d32cd5c5f8adff5bb4390125f626\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cloudhumans.com#website\",\"name\":\"Cloud Chat\",\"url\":\"https://docs.cloudhumans.com\",\"publisher\":{\"@id\":\"https://docs.cloudhumans.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits#webpage\",\"url\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits\",\"name\":\"Propose an agent edit\",\"description\":\"First step of a safe two-step edit — nothing is written yet. Send anchored edits (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value config/name/description keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. config takes the agent's config keys DIRECTLY — never nested under configurable. At least one of edits, config, name or description must carry a change. Returns {message, diff, confirmationId, baseUpdatedAt}: review the diff line by line — especially - lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.\",\"dateModified\":\"2026-08-27T22:37:53.010Z\",\"isPartOf\":{\"@id\":\"https://docs.cloudhumans.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agents\",\"item\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/list-assistants\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Propose an agent edit\",\"item\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits#apireference\",\"headline\":\"Propose an agent edit\",\"name\":\"Propose an agent edit\",\"description\":\"First step of a safe two-step edit — nothing is written yet. Send anchored edits (each replacing ONE excerpt copied verbatim from the current text — read it first with getAssistant/readAssistantText), whole-value config/name/description keys (RFC 7386 merge patch: omit a key to keep it, null clears it, arrays are replaced whole), or both in the same call. config takes the agent's config keys DIRECTLY — never nested under configurable. At least one of edits, config, name or description must carry a change. Returns {message, diff, confirmationId, baseUpdatedAt}: review the diff line by line — especially - lines — then call confirmAssistantEdits with just confirmationId and If-Match=baseUpdatedAt; no other body field is read, the server replays what it stored. Only a DRAFT accepts edits: a published agent answers 409 DRAFT_REQUIRED, naming its draft or how to create one.\",\"url\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cloudhumans.com/api-reference/claudia/endpoints/propose-assistant-edits#webpage\"},\"dateModified\":\"2026-08-27T22:37:53.010Z\",\"publisher\":{\"@id\":\"https://docs.cloudhumans.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cloudhumans.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Cloud Chat\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Cloud Chat","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","products":[{"product":"Cloud Chat","icon":"messages","pages":[{"title":"Cloud Chat","href":"/api-reference/cloudchat/overview"}]},{"product":"Claudia","icon":"robot","groups":[{"group":"Getting Started","pages":[{"title":"Sign in","href":"/api-reference/claudia/sign-in"}]},{"group":"Authentication","pages":[{"title":"Sign in and get a token","deprecated":null,"version":null,"openapi":"/api-reference/specs/auth/v1.json post /v1/signin","href":"/api-reference/claudia/v1/auth/authentication/sign-in-and-get-a-token"},{"title":"Answer a sign-in challenge","deprecated":null,"version":null,"openapi":"/api-reference/specs/auth/v1.json post /v1/signin/challenge","href":"/api-reference/claudia/v1/auth/authentication/answer-a-sign-in-challenge"}]},{"group":"Agents","pages":[{"title":"List agents","openapi":"api-reference/specs/claudia/v1.json GET /v1/tenants/{tenant}/assistants","href":"/api-reference/claudia/endpoints/list-assistants"},{"title":"Get one agent","openapi":"api-reference/specs/claudia/v1.json GET /v1/tenants/{tenant}/assistants/{id}","href":"/api-reference/claudia/endpoints/get-assistant"},{"title":"List an agent's saved versions","openapi":"api-reference/specs/claudia/v1.json GET /v1/tenants/{tenant}/assistants/{id}/versions","href":"/api-reference/claudia/endpoints/list-assistant-versions"},{"title":"Get one saved version of an agent","openapi":"api-reference/specs/claudia/v1.json GET /v1/tenants/{tenant}/assistants/{id}/versions/{version}","href":"/api-reference/claudia/endpoints/get-assistant-version"},{"title":"Create an agent","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants","href":"/api-reference/claudia/endpoints/create-assistant"},{"title":"Read one prompt field's full text","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants/{id}/text","description":"Reads the FULL text of ONE field getAssistant stubs out or omits — the same prompt bodies it replaces with a `[N chars — use readAssistantText]` placeholder: `config.system_prompt`, `config.tone_of_voice_prompt`, and any other `config.\u003ckey>` ending in `_prompt`; the top-level `name`/`description` also resolve. Answers the WHOLE value in one response — expect it to be large, and make one call per field: unlike the internal reader, there is no windowing, pagination or search on this surface. `id`/`role` are the same pair getAssistant takes; a `tenant`/`id` your credentials do not cover — including an id from a project outside them — answers the same uniform 404 as getAssistant.","href":"/api-reference/claudia/endpoints/read-assistant-text"},{"title":"Propose an agent edit","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants/{id}/propose-edits","href":"/api-reference/claudia/endpoints/propose-assistant-edits"},{"title":"Confirm an agent edit","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants/{id}/confirm-edits","description":"Second step of a safe edit. Send ONLY the confirmationId returned by proposeAssistantEdits, plus If-Match=baseUpdatedAt as a header — the server replays the exact proposal it stored and writes it; any other body field is ignored. PROPOSAL_NOT_FOUND (404) means the proposal expired: re-run proposeAssistantEdits with the same body and confirm again with the confirmationId it returns. The echo returns the persisted STRUCTURE (version, updated_at, config); prompt bodies come back as a stub — you already have the text, and readAssistantText re-reads it.","href":"/api-reference/claudia/endpoints/confirm-assistant-edits"},{"title":"Propose an agent create","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants/propose-create","href":"/api-reference/claudia/endpoints/propose-assistant-create"},{"title":"Confirm an agent create","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants/confirm-create","href":"/api-reference/claudia/endpoints/confirm-assistant-create"},{"title":"Delete a draft agent","openapi":"api-reference/specs/claudia/v1.json DELETE /v1/tenants/{tenant}/assistants/{id}","href":"/api-reference/claudia/endpoints/delete-assistant"},{"title":"Chat with one agent in a test conversation","openapi":"api-reference/specs/claudia/v1.json POST /v1/tenants/{tenant}/assistants/{id}/invoke","href":"/api-reference/claudia/endpoints/invoke-assistant"}]},{"group":"Agent Tools","pages":[{"title":"List agent tools","openapi":"api-reference/specs/claudia/v1.json GET /v1/tenants/{tenant}/agent-tools","href":"/api-reference/claudia/endpoints/list-agent-tools"}]},{"group":"Conversations","pages":[{"title":"Get a conversation summary","openapi":"api-reference/specs/claudia/v1.json GET /v1/conversations/{id}/summary","href":"/api-reference/claudia/endpoints/get-conversation-summary"},{"title":"Get a message's execution trace","openapi":"api-reference/specs/claudia/v1.json GET /v1/messages/{messageId}/trace","href":"/api-reference/claudia/endpoints/get-message-trace"}]},{"group":"Knowledge Bases","pages":[{"title":"List knowledge bases","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases","href":"/api-reference/claudia/v1/knowledge-bases/list-knowledge-bases"},{"title":"Get a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}","href":"/api-reference/claudia/v1/knowledge-bases/get-a-knowledge-base"},{"title":"Create a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases","href":"/api-reference/claudia/v1/knowledge-bases/create-a-knowledge-base"}]},{"group":"Knowledge Base Content","pages":[{"title":"List and search content","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/entries","href":"/api-reference/claudia/v1/knowledge-base-content/list-and-search-content"},{"title":"Get a content entry","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/entries/{entryId}","href":"/api-reference/claudia/v1/knowledge-base-content/get-a-content-entry"},{"title":"List tags in use","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/entries/tags","href":"/api-reference/claudia/v1/knowledge-base-content/list-tags-in-use"},{"title":"List topics in use","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/entries/topics","href":"/api-reference/claudia/v1/knowledge-base-content/list-topics-in-use"},{"title":"Create a content entry","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/entries","href":"/api-reference/claudia/v1/knowledge-base-content/create-a-content-entry"},{"title":"Import content in bulk","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/entries/import","href":"/api-reference/claudia/v1/knowledge-base-content/import-content-in-bulk"},{"title":"Enable or disable an entry","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/entries/{entryId}/toggle-disable","href":"/api-reference/claudia/v1/knowledge-base-content/enable-or-disable-an-entry"},{"title":"Update a content entry","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json put /v1/knowledge-bases/{kbId}/entries/{entryId}","href":"/api-reference/claudia/v1/knowledge-base-content/update-a-content-entry"},{"title":"Delete a content entry","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json delete /v1/knowledge-bases/{kbId}/entries/{entryId}","href":"/api-reference/claudia/v1/knowledge-base-content/delete-a-content-entry"}]},{"group":"Content Quality","pages":[{"title":"List proposed rewrites","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/improvements/quality","href":"/api-reference/claudia/v1/content-quality/list-proposed-rewrites"},{"title":"Count the quality review","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/improvements/quality/summary","href":"/api-reference/claudia/v1/content-quality/count-the-quality-review"},{"title":"Approve proposed rewrites","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/improvements/quality/approve","href":"/api-reference/claudia/v1/content-quality/approve-proposed-rewrites"},{"title":"Reject proposed rewrites","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/improvements/quality/reject","href":"/api-reference/claudia/v1/content-quality/reject-proposed-rewrites"},{"title":"Edit a proposal before approving it","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json put /v1/knowledge-bases/{kbId}/improvements/quality/{id}","href":"/api-reference/claudia/v1/content-quality/edit-a-proposal-before-approving-it"}]},{"group":"Content Improvements","pages":[{"title":"List suggested content","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/improvements","href":"/api-reference/claudia/v1/content-improvements/list-suggested-content"},{"title":"Count the review queue","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/improvements/summary","href":"/api-reference/claudia/v1/content-improvements/count-the-review-queue"},{"title":"Approve suggestions","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/improvements/approve","href":"/api-reference/claudia/v1/content-improvements/approve-suggestions"},{"title":"Reject suggestions","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/improvements/reject","href":"/api-reference/claudia/v1/content-improvements/reject-suggestions"},{"title":"Edit a suggestion before approving it","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json put /v1/knowledge-bases/{kbId}/improvements/{entryId}","href":"/api-reference/claudia/v1/content-improvements/edit-a-suggestion-before-approving-it"}]},{"group":"Content Sources","pages":[{"title":"List content sources","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/knowledge-bases/{kbId}/scraper-config","href":"/api-reference/claudia/v1/content-sources/list-content-sources"},{"title":"Create or update a content source","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json patch /v1/knowledge-bases/{kbId}/scraper-config","href":"/api-reference/claudia/v1/content-sources/create-or-update-a-content-source"},{"title":"Delete a content source","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json delete /v1/knowledge-bases/{kbId}/scraper-config/{configId}","href":"/api-reference/claudia/v1/content-sources/delete-a-content-source"},{"title":"Run a content source now","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/scraper-config/{configId}/run","href":"/api-reference/claudia/v1/content-sources/run-a-content-source-now"}]},{"group":"MCP Servers","pages":[{"title":"List MCP servers","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/tenants/{tenant}/mcp-servers","href":"/api-reference/claudia/v1/mcp-servers/list-mcp-servers"},{"title":"Register an MCP server","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/tenants/{tenant}/mcp-servers","href":"/api-reference/claudia/v1/mcp-servers/register-an-mcp-server"},{"title":"Probe an MCP server","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/tenants/{tenant}/mcp-servers/validate","href":"/api-reference/claudia/v1/mcp-servers/probe-an-mcp-server"},{"title":"Update an MCP server","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json put /v1/tenants/{tenant}/mcp-servers/{id}","href":"/api-reference/claudia/v1/mcp-servers/update-an-mcp-server"},{"title":"Delete an MCP server","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json delete /v1/tenants/{tenant}/mcp-servers/{id}","href":"/api-reference/claudia/v1/mcp-servers/delete-an-mcp-server"}]},{"group":"Playground","pages":[{"title":"Send a message to ClaudIA and read its answer","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json post /v1/playground/invoke","href":"/api-reference/claudia/v1/playground/send-a-message-to-claudia-and-read-its-answer"}]},{"group":"Project Settings","pages":[{"title":"Read a project's settings","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/projects/{project}/settings","href":"/api-reference/claudia/v1/project-settings/read-a-projects-settings"},{"title":"Read who changed a project's settings, and to what","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/projects/{project}/settings/history","href":"/api-reference/claudia/v1/project-settings/read-who-changed-a-projects-settings-and-to-what"},{"title":"Change a project's settings","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json patch /v1/projects/{project}/settings","href":"/api-reference/claudia/v1/project-settings/change-a-projects-settings"},{"title":"List a project's A/B variants","deprecated":null,"version":null,"openapi":"/api-reference/specs/claudia/v1.json get /v1/projects/{project}/ab-keys","href":"/api-reference/claudia/v1/project-settings/list-a-projects-ab-variants"}]}]}]}]},"basePath":"","title":"Propose an agent edit - Cloud Chat","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","Page-Dr40SSJq.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}