Changes an agent profile by merge patch, answering the profile: an absent field keeps its value.
Use this tool when you need to:
- Rename a profile, or change its model and reasoning effort
- Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent
Examples:
- PATCH /agent-profiles/{profileID} {"model": "claude-sonnet-5-5", "reasoning_effort": null}
- PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {"runs_on": {"runs_on": "stored", "connection_id": "0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09"}, "fallback": {"mode": "any_usable", "then": {"runs_on": "aether"}}}
Hints:
- profileID is the profile's uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model's default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid.
- The model and effort are checked together with the profile's values of those the patch omits (400 for a pair the catalog does not pair with the profile's agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither.
- A profile keeps its agent: agent_type is absent or names the profile's own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort.
- runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile's agent.
- fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder's held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none.
- Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected.
- A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback.
- Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller's agent's own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference.
- A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder's for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin's harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback.
- Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it.
- Restricted to an owner or admin of the profile's organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.
What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop.
What the profile's tasks run on: absent keeps the profile's pin; default pins nobody, so each task runs on its creator's default; aether, Aether inference (Claude Code and Codex only); stored, a connection by id, which you hold or the profile already pins, that works with the profile's agent.
What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop. A stored named hop without connection_id was disconnected.
What the profile's tasks run on: default pins nobody, so each task runs on its creator's default; aether, Aether inference; stored, the connection it pins.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Aether","colors":{"primary":"#9184ff","light":"#b3a9ff","dark":"#9184ff"},"logo":{"light":"https://mintcdn.com/aether-c4587800/hrC9bOYLpJ53VNbo/logo/light.svg?fit=max\u0026auto=format\u0026n=hrC9bOYLpJ53VNbo\u0026q=85\u0026s=cdf40b8647da8a5d82a91e289a1958f7","dark":"https://mintcdn.com/aether-c4587800/hrC9bOYLpJ53VNbo/logo/dark.svg?fit=max\u0026auto=format\u0026n=hrC9bOYLpJ53VNbo\u0026q=85\u0026s=ff1a5d20e563918957a5f0eba367dee4","href":"https://www.runaether.dev"},"favicon":"https://mintcdn.com/aether-c4587800/hrC9bOYLpJ53VNbo/favicon.svg?fit=max\u0026auto=format\u0026n=hrC9bOYLpJ53VNbo\u0026q=85\u0026s=26bfe1ec698456a716b64fb50a5848be","api":{"openapi":"api-reference/openapi.json"},"appearance":{"default":"dark","strict":true},"background":{"color":{"light":"#f4f3ef","dark":"#08080b"}},"navbar":{"links":[{"href":"https://www.runaether.dev/changelog","label":"Changelog"}],"primary":{"type":"button","label":"Open Aether","href":"https://app.runaether.dev"}},"footer":{"socials":{"x":"https://x.com/pranavctl","github":"https://github.com/Aether-Runtime"}},"fonts":{"family":"Geist"},"styling":{"codeblocks":"dark","latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"aether-c4587800","hasAudioNarration":false,"actualSubdomain":"aether-c4587800","customDomains":["docs.runaether.dev"],"gitSource":{"type":"github","owner":"aether-runtime","repo":"aether","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae34c845987989e1eefa815","collectionId":"20d5d3a7-27c6-4c50-a951-d57bcf6c94e4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae34c845987989e1eefa815"},"entitlements":{},"buildId":"6ae34f41c03e6fc848f051c8","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":280},{"language":"default","tag":"CLI Reference","count":37},{"language":"default","tag":"Pull Requests","count":35},{"language":"default","tag":"Guides","count":28},{"language":"default","tag":"Tasks","count":27},{"language":"default","tag":"Using Aether","count":24},{"language":"default","tag":"MCP Servers","count":23},{"language":"default","tag":"Concepts","count":22},{"language":"default","tag":"Agent","count":17},{"language":"default","tag":"Organizations","count":17}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{color-scheme:dark}::selection{background:rgba(145,132,255,.25)}"}],"page":{"pagePath":"api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid","slug":"/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid","pageMetadata":{"title":"Update agent profile","openapi":"api-reference/openapi.json PATCH /agent-profiles/{profileID}","description":"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value.\n\nUse this tool when you need to:\n- Rename a profile, or change its model and reasoning effort\n- Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent\n\nExamples:\n- PATCH /agent-profiles/{profileID} {\"model\": \"claude-sonnet-5-5\", \"reasoning_effort\": null}\n- PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\"runs_on\": {\"runs_on\": \"stored\", \"connection_id\": \"0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\"}, \"fallback\": {\"mode\": \"any_usable\", \"then\": {\"runs_on\": \"aether\"}}}\n\nHints:\n- profileID is the profile's uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model's default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid.\n- The model and effort are checked together with the profile's values of those the patch omits (400 for a pair the catalog does not pair with the profile's agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither.\n- A profile keeps its agent: agent_type is absent or names the profile's own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort.\n- runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile's agent.\n- fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder's held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none.\n- Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected.\n- A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback.\n- Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller's agent's own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference.\n- A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder's for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin's harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback.\n- Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it.\n- Restricted to an owner or admin of the profile's organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.","href":"/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid"},"description":"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value.\n\nUse this tool when you need to:\n- Rename a profile, or change its model and reasoning effort\n- Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent\n\nExamples:\n- PATCH /agent-profiles/{profileID} {\"model\": \"claude-sonnet-5-5\", \"reasoning_effort\": null}\n- PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\"runs_on\": {\"runs_on\": \"stored\", \"connection_id\": \"0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\"}, \"fallback\": {\"mode\": \"any_usable\", \"then\": {\"runs_on\": \"aether\"}}}\n\nHints:\n- profileID is the profile's uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model's default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid.\n- The model and effort are checked together with the profile's values of those the patch omits (400 for a pair the catalog does not pair with the profile's agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither.\n- A profile keeps its agent: agent_type is absent or names the profile's own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort.\n- runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile's agent.\n- fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder's held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none.\n- Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected.\n- A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback.\n- Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller's agent's own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference.\n- A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder's for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin's harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback.\n- Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it.\n- Restricted to an owner or admin of the profile's organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.","pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Update agent profile","openapi":"api-reference/openapi.json PATCH /agent-profiles/{profileID}","description":"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value.\n\nUse this tool when you need to:\n- Rename a profile, or change its model and reasoning effort\n- Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent\n\nExamples:\n- PATCH /agent-profiles/{profileID} {\"model\": \"claude-sonnet-5-5\", \"reasoning_effort\": null}\n- PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\"runs_on\": {\"runs_on\": \"stored\", \"connection_id\": \"0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\"}, \"fallback\": {\"mode\": \"any_usable\", \"then\": {\"runs_on\": \"aether\"}}}\n\nHints:\n- profileID is the profile's uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model's default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid.\n- The model and effort are checked together with the profile's values of those the patch omits (400 for a pair the catalog does not pair with the profile's agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither.\n- A profile keeps its agent: agent_type is absent or names the profile's own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort.\n- runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile's agent.\n- fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder's held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none.\n- Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected.\n- A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback.\n- Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller's agent's own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference.\n- A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder's for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin's harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback.\n- Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it.\n- Restricted to an owner or admin of the profile's organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.","href":"/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value.\n\nUse this tool when you need to:\n- Rename a profile, or change its model and reasoning effort\n- Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent\n\nExamples:\n- PATCH /agent-profiles/{profileID} {\"model\": \"claude-sonnet-5-5\", \"reasoning_effort\": null}\n- PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\"runs_on\": {\"runs_on\": \"stored\", \"connection_id\": \"0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\"}, \"fallback\": {\"mode\": \"any_usable\", \"then\": {\"runs_on\": \"aether\"}}}\n\nHints:\n- profileID is the profile's uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model's default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid.\n- The model and effort are checked together with the profile's values of those the patch omits (400 for a pair the catalog does not pair with the profile's agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither.\n- A profile keeps its agent: agent_type is absent or names the profile's own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort.\n- runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile's agent.\n- fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder's held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none.\n- Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected.\n- A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback.\n- Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller's agent's own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference.\n- A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder's for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin's harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback.\n- Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it.\n- Restricted to an owner or admin of the profile's organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.","operationId":"patchAgentProfile","parameters":["5589ba19-5774-473d-9022-6a8e5e8f4461"],"requestBody":"e1616621-14b5-44c0-af67-8c16913a9295","responses":{"200":"2e731e23-16c9-402e-8532-d8d906c597f4","400":"dfbadecc-ffce-42fc-942f-3fa68e1d702f","401":"a307a666-666f-408a-83a7-3fd9c55b993b","403":"af9ed72b-dc3c-4c13-83cf-8868ceb6daaa","404":"dab1ac78-cb4b-4a82-be34-1511c0e6ff45","409":"676e9ff4-4a96-4ab7-b11c-bfc67b79da78","422":"880588da-e3a7-4b63-8c7a-92386d06502c","500":"f1a0a29b-0c34-45c9-8259-07f7ce318780","503":"fd20ca48-4f39-4c44-bd3d-20c9359fa6b6"},"summary":"Update agent profile","tags":["agent-profiles"],"x-aether-label":"agentProfiles.patch","x-aether-path-ids":{"profileID":"-"},"method":"patch","type":"path","servers":["501762e1-f71f-4ad9-9f4e-88ba1a1296d8"],"security":["bee0a17c-510e-458f-badd-9f7e730b0e5f"],"path":"/agent-profiles/{profileID}","baseUrlOptions":["https://api.runaether.dev"],"title":"Update agent profile","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"5589ba19-5774-473d-9022-6a8e5e8f4461":{"in":"path","name":"profileID","required":true,"schema":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"minProperties":1,"properties":{"agent_type":{"description":"The agent harness that runs a task, a profile or a connection: claude-code is Claude Code, codex is Codex, opencode is OpenCode.","enum":["codex","claude-code","opencode"],"type":"string","uniqueKey":"agent_type","typeLabel":"enum\u003cstring>"},"fallback":{"oneOf":[{"type":"object","description":"What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop.","required":["mode"],"properties":{"mode":{"enum":["none"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.0.mode","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"fallback.oneOf.0","typeLabel":"object"},{"type":"object","description":"What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop.","required":["mode","runs_on"],"properties":{"mode":{"enum":["named"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"runs_on":{"description":"Aether inference, paid from your organization's balance: Claude Code and Codex only.","enum":["aether"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.1.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"fallback.oneOf.1","typeLabel":"object"},{"type":"object","description":"What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop.","required":["mode","runs_on","connection_id"],"properties":{"connection_id":{"description":"A connection you hold that works with the harness.","format":"uuid","type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.2.connection_id","typeLabel":"string\u003cuuid>"},"mode":{"enum":["named"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.2.mode","typeLabel":"enum\u003cstring>"},"runs_on":{"description":"The connection connection_id names.","enum":["stored"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.2.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"fallback.oneOf.2","typeLabel":"object"},{"type":"object","description":"What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop.","required":["mode"],"properties":{"mode":{"enum":["any_usable"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.3.mode","typeLabel":"enum\u003cstring>"},"then":{"oneOf":[{"type":"object","required":["runs_on"],"properties":{"runs_on":{"description":"Aether inference, paid from your organization's balance: Claude Code and Codex only.","enum":["aether"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.3.then.oneOf.0.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"fallback.oneOf.3.then.oneOf.0","typeLabel":"object"},{"type":"object","required":["runs_on","connection_id"],"properties":{"connection_id":{"description":"A connection you hold that works with the harness.","format":"uuid","type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.3.then.oneOf.1.connection_id","typeLabel":"string\u003cuuid>"},"runs_on":{"description":"The connection connection_id names.","enum":["stored"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.3.then.oneOf.1.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"fallback.oneOf.3.then.oneOf.1","typeLabel":"object"}],"uniqueKey":"fallback.oneOf.3.then","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"fallback.oneOf.3","typeLabel":"object"}],"uniqueKey":"fallback","typeLabel":"object"},"model":{"minLength":1,"type":"string","uniqueKey":"model","typeLabel":"string"},"name":{"maxLength":100,"minLength":1,"type":"string","uniqueKey":"name","typeLabel":"string"},"reasoning_effort":{"oneOf":[{"enum":["ultra","max","xhigh","high","medium","low","ultrathink","ultracode"],"type":"string","uniqueKey":"reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"enum":["ultra","max","xhigh","high","medium","low","ultrathink","ultracode"],"type":"null","uniqueKey":"reasoning_effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"reasoning_effort","typeLabel":"enum\u003cstring> | null"},"runs_on":{"oneOf":[{"type":"object","description":"What the profile's tasks run on: absent keeps the profile's pin; default pins nobody, so each task runs on its creator's default; aether, Aether inference (Claude Code and Codex only); stored, a connection by id, which you hold or the profile already pins, that works with the profile's agent.","required":["runs_on"],"properties":{"runs_on":{"description":"No pin: each task runs on its creator's default.","enum":["default"],"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.0.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"runs_on.oneOf.0","typeLabel":"object"},{"type":"object","description":"What the profile's tasks run on: absent keeps the profile's pin; default pins nobody, so each task runs on its creator's default; aether, Aether inference (Claude Code and Codex only); stored, a connection by id, which you hold or the profile already pins, that works with the profile's agent.","required":["runs_on"],"properties":{"runs_on":{"description":"Aether inference, paid from your organization's balance: Claude Code and Codex only.","enum":["aether"],"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.1.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"runs_on.oneOf.1","typeLabel":"object"},{"type":"object","description":"What the profile's tasks run on: absent keeps the profile's pin; default pins nobody, so each task runs on its creator's default; aether, Aether inference (Claude Code and Codex only); stored, a connection by id, which you hold or the profile already pins, that works with the profile's agent.","required":["runs_on","connection_id"],"properties":{"connection_id":{"description":"A connection you hold that works with the harness.","format":"uuid","type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.2.connection_id","typeLabel":"string\u003cuuid>"},"runs_on":{"description":"The connection connection_id names.","enum":["stored"],"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.2.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"runs_on.oneOf.2","typeLabel":"object"}],"uniqueKey":"runs_on","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"fallback":{"mode":"none"},"model":"\u003cstring>","name":"\u003cstring>","runs_on":{"runs_on":"default"}}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"2e731e23-16c9-402e-8532-d8d906c597f4":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"agent_type":{"description":"The agent harness that runs a task, a profile or a connection: claude-code is Claude Code, codex is Codex, opencode is OpenCode.","enum":["codex","claude-code","opencode"],"type":"string","isRequired":true,"uniqueKey":"agent_type","typeLabel":"enum\u003cstring>"},"created_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"fallback":{"oneOf":[{"type":"object","description":"What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop. A stored named hop without connection_id was disconnected.","required":["mode"],"properties":{"mode":{"enum":["none"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.0.mode","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"fallback.oneOf.0","typeLabel":"object"},{"type":"object","description":"What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop. A stored named hop without connection_id was disconnected.","required":["mode","runs_on"],"properties":{"mode":{"enum":["named"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"runs_on":{"description":"Aether inference, paid from your organization's balance: Claude Code and Codex only.","enum":["aether"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.1.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"fallback.oneOf.1","typeLabel":"object"},{"type":"object","description":"What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop. A stored named hop without connection_id was disconnected.","required":["mode","runs_on"],"properties":{"mode":{"enum":["named"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.2.mode","typeLabel":"enum\u003cstring>"},"runs_on":{"description":"The connection connection_id names.","enum":["stored"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.2.runs_on","typeLabel":"enum\u003cstring>"},"connection_id":{"description":"A connection you hold that works with the harness.","format":"uuid","type":"string","uniqueKey":"fallback.oneOf.2.connection_id","typeLabel":"string\u003cuuid>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"fallback.oneOf.2","typeLabel":"object"},{"type":"object","description":"What a task continues on when its plan's window is spent: none stops it; named takes the connection or Aether inference; any_usable takes the first held connection the window does not block, then its optional named hop. A stored named hop without connection_id was disconnected.","required":["mode"],"properties":{"mode":{"enum":["any_usable"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.3.mode","typeLabel":"enum\u003cstring>"},"then":{"oneOf":[{"type":"object","required":["runs_on"],"properties":{"runs_on":{"description":"Aether inference, paid from your organization's balance: Claude Code and Codex only.","enum":["aether"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.3.then.oneOf.0.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"fallback.oneOf.3.then.oneOf.0","typeLabel":"object"},{"type":"object","required":["runs_on"],"properties":{"runs_on":{"description":"The connection connection_id names.","enum":["stored"],"type":"string","isRequired":true,"uniqueKey":"fallback.oneOf.3.then.oneOf.1.runs_on","typeLabel":"enum\u003cstring>"},"connection_id":{"description":"A connection you hold that works with the harness.","format":"uuid","type":"string","uniqueKey":"fallback.oneOf.3.then.oneOf.1.connection_id","typeLabel":"string\u003cuuid>"}},"additionalProperties":false,"uniqueKey":"fallback.oneOf.3.then.oneOf.1","typeLabel":"object"}],"uniqueKey":"fallback.oneOf.3.then","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"fallback.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"fallback","typeLabel":"object"},"id":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"model":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"model","typeLabel":"string"},"name":{"maxLength":100,"minLength":1,"type":"string","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"reasoning_effort":{"oneOf":[{"enum":["ultra","max","xhigh","high","medium","low","ultrathink","ultracode"],"type":"string","isRequired":true,"uniqueKey":"reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"enum":["ultra","max","xhigh","high","medium","low","ultrathink","ultracode"],"type":"null","isRequired":true,"uniqueKey":"reasoning_effort.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"reasoning_effort","typeLabel":"enum\u003cstring> | null"},"runs_on":{"oneOf":[{"type":"object","description":"What the profile's tasks run on: default pins nobody, so each task runs on its creator's default; aether, Aether inference; stored, the connection it pins.","required":["runs_on"],"properties":{"runs_on":{"description":"No pin: each task runs on its creator's default.","enum":["default"],"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.0.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"runs_on.oneOf.0","typeLabel":"object"},{"type":"object","description":"What the profile's tasks run on: default pins nobody, so each task runs on its creator's default; aether, Aether inference; stored, the connection it pins.","required":["runs_on"],"properties":{"runs_on":{"description":"Aether inference, paid from the task's organization's balance.","enum":["aether"],"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.1.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"runs_on.oneOf.1","typeLabel":"object"},{"type":"object","description":"What the profile's tasks run on: default pins nobody, so each task runs on its creator's default; aether, Aether inference; stored, the connection it pins.","required":["runs_on","id","option","name","owner"],"properties":{"id":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.2.id","typeLabel":"string\u003cuuid>"},"name":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.2.name","typeLabel":"string"},"option":{"enum":["claude_plan","anthropic_api_key","chatgpt_plan","openai_api_key","openrouter_api_key","opencode_auth_file"],"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.2.option","typeLabel":"enum\u003cstring>"},"owner":{"description":"Who holds the connection, by their display name, else their email.","minLength":1,"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.2.owner","typeLabel":"string"},"runs_on":{"enum":["stored"],"type":"string","isRequired":true,"uniqueKey":"runs_on.oneOf.2.runs_on","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"runs_on.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"runs_on","typeLabel":"object"},"updated_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"}},"required":["id","name","agent_type","model","reasoning_effort","runs_on","fallback","created_at","updated_at"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"agent_type":"codex","created_at":"2023-11-07T05:31:56Z","fallback":{"mode":"none"},"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","model":"\u003cstring>","name":"\u003cstring>","reasoning_effort":"ultra","runs_on":{"runs_on":"default"},"updated_at":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"description":"OK","exampleType":"generated"},"dfbadecc-ffce-42fc-942f-3fa68e1d702f":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"enum":["account_deleting","aether_inference_unavailable","aether_inference_unserved","agent_connector_not_found","agent_default_project_archived","agent_profile_changed","agent_profile_harness_fixed","bad_gateway","bad_request","conflict","connection_agent_only","connection_harness_mismatch","connection_not_held","control_forbidden","default_skill_required","fallback_is_own_connection","fallback_required_with_pin","fallback_requires_pin","forbidden","gateway_timeout","gone","integration_auth_unexpected","integration_not_in_directory","integration_shape_changed","internal_error","mcp_connection_github_not_connected","mcp_connection_oauth_not_accepted","mcp_connection_org_not_offered","mcp_connection_secret_invalid","mcp_connection_server_changed","mcp_connection_static_secret_not_accepted","mcp_credential_policy_not_applicable","mcp_credential_policy_org_unavailable","mcp_credential_policy_required","mcp_oauth_app_auth_method_unsupported","mcp_oauth_app_invalid","mcp_oauth_app_issuer_invalid","mcp_oauth_app_required","mcp_oauth_not_advertised","mcp_oauth_pkce_unsupported","mcp_oauth_registration_failed","mcp_repo_config_invalid","mcp_server_address_refused","mcp_server_aether_managed","mcp_server_api_key_not_applicable","mcp_server_args_invalid","mcp_server_auth_discovery_failed","mcp_server_auth_unsupported","mcp_server_directory_managed","mcp_server_directory_moved","mcp_server_display_name_invalid","mcp_server_env_invalid","mcp_server_headers_invalid","mcp_server_key_invalid","mcp_server_key_reserved","mcp_server_key_taken","mcp_server_kind_change_refused","mcp_server_not_from_directory","mcp_server_not_mcp","mcp_server_package_invalid","mcp_server_plugin_bundled","mcp_server_plugin_off","mcp_server_response_too_large","mcp_server_return_to_invalid","mcp_server_runtime_invalid","mcp_server_switched_off","mcp_server_unreachable","mcp_server_url_invalid","mcp_server_version_unpinned","method_not_allowed","not_acceptable","not_found","not_implemented","org_role_insufficient","org_suspended","payment_required","plugin_moved","plugin_name_taken","plugin_request_invalid","plugin_server_key_reserved","plugin_server_key_taken","plugin_server_probe_failed","plugin_server_required","plugin_skill_invalid","plugin_source_address_refused","plugin_source_empty","plugin_source_invalid","plugin_source_not_found","plugin_source_not_public","plugin_source_too_large","plugin_source_unreachable","plugin_source_unsupported","plugin_switched_off","plugin_undeliverable","precondition_failed","rate_limited","request_canceled","request_timeout","request_too_large","service_unavailable","skill_slug_reserved","unauthenticated","unsupported_media_type","validation_failed"],"minLength":1,"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"errors":{"items":{"additionalProperties":false,"properties":{"location":{"description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'","type":"string","uniqueKey":"errors.items.[INDEX].location","typeLabel":"string"},"message":{"description":"Error message text","type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"value":{"description":"The value at the given location","uniqueKey":"errors.items.[INDEX].value","typeLabel":"any"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"}},"required":["error","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"account_deleting","error":"\u003cstring>","errors":[{"location":"\u003cstring>","message":"\u003cstring>","value":"\u003cunknown>"}]}}},"exampleType":"generated"}},"description":"Bad Request","exampleType":"generated"},"a307a666-666f-408a-83a7-3fd9c55b993b":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"enum":["account_deleting","aether_inference_unavailable","aether_inference_unserved","agent_connector_not_found","agent_default_project_archived","agent_profile_changed","agent_profile_harness_fixed","bad_gateway","bad_request","conflict","connection_agent_only","connection_harness_mismatch","connection_not_held","control_forbidden","default_skill_required","fallback_is_own_connection","fallback_required_with_pin","fallback_requires_pin","forbidden","gateway_timeout","gone","integration_auth_unexpected","integration_not_in_directory","integration_shape_changed","internal_error","mcp_connection_github_not_connected","mcp_connection_oauth_not_accepted","mcp_connection_org_not_offered","mcp_connection_secret_invalid","mcp_connection_server_changed","mcp_connection_static_secret_not_accepted","mcp_credential_policy_not_applicable","mcp_credential_policy_org_unavailable","mcp_credential_policy_required","mcp_oauth_app_auth_method_unsupported","mcp_oauth_app_invalid","mcp_oauth_app_issuer_invalid","mcp_oauth_app_required","mcp_oauth_not_advertised","mcp_oauth_pkce_unsupported","mcp_oauth_registration_failed","mcp_repo_config_invalid","mcp_server_address_refused","mcp_server_aether_managed","mcp_server_api_key_not_applicable","mcp_server_args_invalid","mcp_server_auth_discovery_failed","mcp_server_auth_unsupported","mcp_server_directory_managed","mcp_server_directory_moved","mcp_server_display_name_invalid","mcp_server_env_invalid","mcp_server_headers_invalid","mcp_server_key_invalid","mcp_server_key_reserved","mcp_server_key_taken","mcp_server_kind_change_refused","mcp_server_not_from_directory","mcp_server_not_mcp","mcp_server_package_invalid","mcp_server_plugin_bundled","mcp_server_plugin_off","mcp_server_response_too_large","mcp_server_return_to_invalid","mcp_server_runtime_invalid","mcp_server_switched_off","mcp_server_unreachable","mcp_server_url_invalid","mcp_server_version_unpinned","method_not_allowed","not_acceptable","not_found","not_implemented","org_role_insufficient","org_suspended","payment_required","plugin_moved","plugin_name_taken","plugin_request_invalid","plugin_server_key_reserved","plugin_server_key_taken","plugin_server_probe_failed","plugin_server_required","plugin_skill_invalid","plugin_source_address_refused","plugin_source_empty","plugin_source_invalid","plugin_source_not_found","plugin_source_not_public","plugin_source_too_large","plugin_source_unreachable","plugin_source_unsupported","plugin_switched_off","plugin_undeliverable","precondition_failed","rate_limited","request_canceled","request_timeout","request_too_large","service_unavailable","skill_slug_reserved","unauthenticated","unsupported_media_type","validation_failed"],"minLength":1,"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"errors":{"items":{"additionalProperties":false,"properties":{"location":{"description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'","type":"string","uniqueKey":"errors.items.[INDEX].location","typeLabel":"string"},"message":{"description":"Error message text","type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"value":{"description":"The value at the given location","uniqueKey":"errors.items.[INDEX].value","typeLabel":"any"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"}},"required":["error","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"account_deleting","error":"\u003cstring>","errors":[{"location":"\u003cstring>","message":"\u003cstring>","value":"\u003cunknown>"}]}}},"exampleType":"generated"}},"description":"Unauthorized","exampleType":"generated"},"af9ed72b-dc3c-4c13-83cf-8868ceb6daaa":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error","code"],"properties":{"code":{"enum":["org_membership_required","org_role_insufficient","org_suspended","account_deleting","agent_host_route_not_allowed","credential_kind_not_admitted"],"type":"string","isRequired":true,"uniqueKey":"oneOf.0.code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["error","code"],"properties":{"code":{"enum":["control_forbidden"],"type":"string","isRequired":true,"uniqueKey":"oneOf.1.code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"oneOf.1.error","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"org_membership_required","error":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Forbidden","exampleType":"generated"},"dab1ac78-cb4b-4a82-be34-1511c0e6ff45":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"enum":["account_deleting","aether_inference_unavailable","aether_inference_unserved","agent_connector_not_found","agent_default_project_archived","agent_profile_changed","agent_profile_harness_fixed","bad_gateway","bad_request","conflict","connection_agent_only","connection_harness_mismatch","connection_not_held","control_forbidden","default_skill_required","fallback_is_own_connection","fallback_required_with_pin","fallback_requires_pin","forbidden","gateway_timeout","gone","integration_auth_unexpected","integration_not_in_directory","integration_shape_changed","internal_error","mcp_connection_github_not_connected","mcp_connection_oauth_not_accepted","mcp_connection_org_not_offered","mcp_connection_secret_invalid","mcp_connection_server_changed","mcp_connection_static_secret_not_accepted","mcp_credential_policy_not_applicable","mcp_credential_policy_org_unavailable","mcp_credential_policy_required","mcp_oauth_app_auth_method_unsupported","mcp_oauth_app_invalid","mcp_oauth_app_issuer_invalid","mcp_oauth_app_required","mcp_oauth_not_advertised","mcp_oauth_pkce_unsupported","mcp_oauth_registration_failed","mcp_repo_config_invalid","mcp_server_address_refused","mcp_server_aether_managed","mcp_server_api_key_not_applicable","mcp_server_args_invalid","mcp_server_auth_discovery_failed","mcp_server_auth_unsupported","mcp_server_directory_managed","mcp_server_directory_moved","mcp_server_display_name_invalid","mcp_server_env_invalid","mcp_server_headers_invalid","mcp_server_key_invalid","mcp_server_key_reserved","mcp_server_key_taken","mcp_server_kind_change_refused","mcp_server_not_from_directory","mcp_server_not_mcp","mcp_server_package_invalid","mcp_server_plugin_bundled","mcp_server_plugin_off","mcp_server_response_too_large","mcp_server_return_to_invalid","mcp_server_runtime_invalid","mcp_server_switched_off","mcp_server_unreachable","mcp_server_url_invalid","mcp_server_version_unpinned","method_not_allowed","not_acceptable","not_found","not_implemented","org_role_insufficient","org_suspended","payment_required","plugin_moved","plugin_name_taken","plugin_request_invalid","plugin_server_key_reserved","plugin_server_key_taken","plugin_server_probe_failed","plugin_server_required","plugin_skill_invalid","plugin_source_address_refused","plugin_source_empty","plugin_source_invalid","plugin_source_not_found","plugin_source_not_public","plugin_source_too_large","plugin_source_unreachable","plugin_source_unsupported","plugin_switched_off","plugin_undeliverable","precondition_failed","rate_limited","request_canceled","request_timeout","request_too_large","service_unavailable","skill_slug_reserved","unauthenticated","unsupported_media_type","validation_failed"],"minLength":1,"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"errors":{"items":{"additionalProperties":false,"properties":{"location":{"description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'","type":"string","uniqueKey":"errors.items.[INDEX].location","typeLabel":"string"},"message":{"description":"Error message text","type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"value":{"description":"The value at the given location","uniqueKey":"errors.items.[INDEX].value","typeLabel":"any"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"}},"required":["error","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"account_deleting","error":"\u003cstring>","errors":[{"location":"\u003cstring>","message":"\u003cstring>","value":"\u003cunknown>"}]}}},"exampleType":"generated"}},"description":"Not Found","exampleType":"generated"},"676e9ff4-4a96-4ab7-b11c-bfc67b79da78":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"enum":["account_deleting","aether_inference_unavailable","aether_inference_unserved","agent_connector_not_found","agent_default_project_archived","agent_profile_changed","agent_profile_harness_fixed","bad_gateway","bad_request","conflict","connection_agent_only","connection_harness_mismatch","connection_not_held","control_forbidden","default_skill_required","fallback_is_own_connection","fallback_required_with_pin","fallback_requires_pin","forbidden","gateway_timeout","gone","integration_auth_unexpected","integration_not_in_directory","integration_shape_changed","internal_error","mcp_connection_github_not_connected","mcp_connection_oauth_not_accepted","mcp_connection_org_not_offered","mcp_connection_secret_invalid","mcp_connection_server_changed","mcp_connection_static_secret_not_accepted","mcp_credential_policy_not_applicable","mcp_credential_policy_org_unavailable","mcp_credential_policy_required","mcp_oauth_app_auth_method_unsupported","mcp_oauth_app_invalid","mcp_oauth_app_issuer_invalid","mcp_oauth_app_required","mcp_oauth_not_advertised","mcp_oauth_pkce_unsupported","mcp_oauth_registration_failed","mcp_repo_config_invalid","mcp_server_address_refused","mcp_server_aether_managed","mcp_server_api_key_not_applicable","mcp_server_args_invalid","mcp_server_auth_discovery_failed","mcp_server_auth_unsupported","mcp_server_directory_managed","mcp_server_directory_moved","mcp_server_display_name_invalid","mcp_server_env_invalid","mcp_server_headers_invalid","mcp_server_key_invalid","mcp_server_key_reserved","mcp_server_key_taken","mcp_server_kind_change_refused","mcp_server_not_from_directory","mcp_server_not_mcp","mcp_server_package_invalid","mcp_server_plugin_bundled","mcp_server_plugin_off","mcp_server_response_too_large","mcp_server_return_to_invalid","mcp_server_runtime_invalid","mcp_server_switched_off","mcp_server_unreachable","mcp_server_url_invalid","mcp_server_version_unpinned","method_not_allowed","not_acceptable","not_found","not_implemented","org_role_insufficient","org_suspended","payment_required","plugin_moved","plugin_name_taken","plugin_request_invalid","plugin_server_key_reserved","plugin_server_key_taken","plugin_server_probe_failed","plugin_server_required","plugin_skill_invalid","plugin_source_address_refused","plugin_source_empty","plugin_source_invalid","plugin_source_not_found","plugin_source_not_public","plugin_source_too_large","plugin_source_unreachable","plugin_source_unsupported","plugin_switched_off","plugin_undeliverable","precondition_failed","rate_limited","request_canceled","request_timeout","request_too_large","service_unavailable","skill_slug_reserved","unauthenticated","unsupported_media_type","validation_failed"],"minLength":1,"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"errors":{"items":{"additionalProperties":false,"properties":{"location":{"description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'","type":"string","uniqueKey":"errors.items.[INDEX].location","typeLabel":"string"},"message":{"description":"Error message text","type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"value":{"description":"The value at the given location","uniqueKey":"errors.items.[INDEX].value","typeLabel":"any"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"}},"required":["error","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"account_deleting","error":"\u003cstring>","errors":[{"location":"\u003cstring>","message":"\u003cstring>","value":"\u003cunknown>"}]}}},"exampleType":"generated"}},"description":"Conflict","exampleType":"generated"},"880588da-e3a7-4b63-8c7a-92386d06502c":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"enum":["account_deleting","aether_inference_unavailable","aether_inference_unserved","agent_connector_not_found","agent_default_project_archived","agent_profile_changed","agent_profile_harness_fixed","bad_gateway","bad_request","conflict","connection_agent_only","connection_harness_mismatch","connection_not_held","control_forbidden","default_skill_required","fallback_is_own_connection","fallback_required_with_pin","fallback_requires_pin","forbidden","gateway_timeout","gone","integration_auth_unexpected","integration_not_in_directory","integration_shape_changed","internal_error","mcp_connection_github_not_connected","mcp_connection_oauth_not_accepted","mcp_connection_org_not_offered","mcp_connection_secret_invalid","mcp_connection_server_changed","mcp_connection_static_secret_not_accepted","mcp_credential_policy_not_applicable","mcp_credential_policy_org_unavailable","mcp_credential_policy_required","mcp_oauth_app_auth_method_unsupported","mcp_oauth_app_invalid","mcp_oauth_app_issuer_invalid","mcp_oauth_app_required","mcp_oauth_not_advertised","mcp_oauth_pkce_unsupported","mcp_oauth_registration_failed","mcp_repo_config_invalid","mcp_server_address_refused","mcp_server_aether_managed","mcp_server_api_key_not_applicable","mcp_server_args_invalid","mcp_server_auth_discovery_failed","mcp_server_auth_unsupported","mcp_server_directory_managed","mcp_server_directory_moved","mcp_server_display_name_invalid","mcp_server_env_invalid","mcp_server_headers_invalid","mcp_server_key_invalid","mcp_server_key_reserved","mcp_server_key_taken","mcp_server_kind_change_refused","mcp_server_not_from_directory","mcp_server_not_mcp","mcp_server_package_invalid","mcp_server_plugin_bundled","mcp_server_plugin_off","mcp_server_response_too_large","mcp_server_return_to_invalid","mcp_server_runtime_invalid","mcp_server_switched_off","mcp_server_unreachable","mcp_server_url_invalid","mcp_server_version_unpinned","method_not_allowed","not_acceptable","not_found","not_implemented","org_role_insufficient","org_suspended","payment_required","plugin_moved","plugin_name_taken","plugin_request_invalid","plugin_server_key_reserved","plugin_server_key_taken","plugin_server_probe_failed","plugin_server_required","plugin_skill_invalid","plugin_source_address_refused","plugin_source_empty","plugin_source_invalid","plugin_source_not_found","plugin_source_not_public","plugin_source_too_large","plugin_source_unreachable","plugin_source_unsupported","plugin_switched_off","plugin_undeliverable","precondition_failed","rate_limited","request_canceled","request_timeout","request_too_large","service_unavailable","skill_slug_reserved","unauthenticated","unsupported_media_type","validation_failed"],"minLength":1,"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"errors":{"items":{"additionalProperties":false,"properties":{"location":{"description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'","type":"string","uniqueKey":"errors.items.[INDEX].location","typeLabel":"string"},"message":{"description":"Error message text","type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"value":{"description":"The value at the given location","uniqueKey":"errors.items.[INDEX].value","typeLabel":"any"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"}},"required":["error","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"account_deleting","error":"\u003cstring>","errors":[{"location":"\u003cstring>","message":"\u003cstring>","value":"\u003cunknown>"}]}}},"exampleType":"generated"}},"description":"Unprocessable Entity","exampleType":"generated"},"f1a0a29b-0c34-45c9-8259-07f7ce318780":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"enum":["account_deleting","aether_inference_unavailable","aether_inference_unserved","agent_connector_not_found","agent_default_project_archived","agent_profile_changed","agent_profile_harness_fixed","bad_gateway","bad_request","conflict","connection_agent_only","connection_harness_mismatch","connection_not_held","control_forbidden","default_skill_required","fallback_is_own_connection","fallback_required_with_pin","fallback_requires_pin","forbidden","gateway_timeout","gone","integration_auth_unexpected","integration_not_in_directory","integration_shape_changed","internal_error","mcp_connection_github_not_connected","mcp_connection_oauth_not_accepted","mcp_connection_org_not_offered","mcp_connection_secret_invalid","mcp_connection_server_changed","mcp_connection_static_secret_not_accepted","mcp_credential_policy_not_applicable","mcp_credential_policy_org_unavailable","mcp_credential_policy_required","mcp_oauth_app_auth_method_unsupported","mcp_oauth_app_invalid","mcp_oauth_app_issuer_invalid","mcp_oauth_app_required","mcp_oauth_not_advertised","mcp_oauth_pkce_unsupported","mcp_oauth_registration_failed","mcp_repo_config_invalid","mcp_server_address_refused","mcp_server_aether_managed","mcp_server_api_key_not_applicable","mcp_server_args_invalid","mcp_server_auth_discovery_failed","mcp_server_auth_unsupported","mcp_server_directory_managed","mcp_server_directory_moved","mcp_server_display_name_invalid","mcp_server_env_invalid","mcp_server_headers_invalid","mcp_server_key_invalid","mcp_server_key_reserved","mcp_server_key_taken","mcp_server_kind_change_refused","mcp_server_not_from_directory","mcp_server_not_mcp","mcp_server_package_invalid","mcp_server_plugin_bundled","mcp_server_plugin_off","mcp_server_response_too_large","mcp_server_return_to_invalid","mcp_server_runtime_invalid","mcp_server_switched_off","mcp_server_unreachable","mcp_server_url_invalid","mcp_server_version_unpinned","method_not_allowed","not_acceptable","not_found","not_implemented","org_role_insufficient","org_suspended","payment_required","plugin_moved","plugin_name_taken","plugin_request_invalid","plugin_server_key_reserved","plugin_server_key_taken","plugin_server_probe_failed","plugin_server_required","plugin_skill_invalid","plugin_source_address_refused","plugin_source_empty","plugin_source_invalid","plugin_source_not_found","plugin_source_not_public","plugin_source_too_large","plugin_source_unreachable","plugin_source_unsupported","plugin_switched_off","plugin_undeliverable","precondition_failed","rate_limited","request_canceled","request_timeout","request_too_large","service_unavailable","skill_slug_reserved","unauthenticated","unsupported_media_type","validation_failed"],"minLength":1,"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"errors":{"items":{"additionalProperties":false,"properties":{"location":{"description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'","type":"string","uniqueKey":"errors.items.[INDEX].location","typeLabel":"string"},"message":{"description":"Error message text","type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"value":{"description":"The value at the given location","uniqueKey":"errors.items.[INDEX].value","typeLabel":"any"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"}},"required":["error","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"account_deleting","error":"\u003cstring>","errors":[{"location":"\u003cstring>","message":"\u003cstring>","value":"\u003cunknown>"}]}}},"exampleType":"generated"}},"description":"Internal Server Error","exampleType":"generated"},"fd20ca48-4f39-4c44-bd3d-20c9359fa6b6":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"enum":["account_deleting","aether_inference_unavailable","aether_inference_unserved","agent_connector_not_found","agent_default_project_archived","agent_profile_changed","agent_profile_harness_fixed","bad_gateway","bad_request","conflict","connection_agent_only","connection_harness_mismatch","connection_not_held","control_forbidden","default_skill_required","fallback_is_own_connection","fallback_required_with_pin","fallback_requires_pin","forbidden","gateway_timeout","gone","integration_auth_unexpected","integration_not_in_directory","integration_shape_changed","internal_error","mcp_connection_github_not_connected","mcp_connection_oauth_not_accepted","mcp_connection_org_not_offered","mcp_connection_secret_invalid","mcp_connection_server_changed","mcp_connection_static_secret_not_accepted","mcp_credential_policy_not_applicable","mcp_credential_policy_org_unavailable","mcp_credential_policy_required","mcp_oauth_app_auth_method_unsupported","mcp_oauth_app_invalid","mcp_oauth_app_issuer_invalid","mcp_oauth_app_required","mcp_oauth_not_advertised","mcp_oauth_pkce_unsupported","mcp_oauth_registration_failed","mcp_repo_config_invalid","mcp_server_address_refused","mcp_server_aether_managed","mcp_server_api_key_not_applicable","mcp_server_args_invalid","mcp_server_auth_discovery_failed","mcp_server_auth_unsupported","mcp_server_directory_managed","mcp_server_directory_moved","mcp_server_display_name_invalid","mcp_server_env_invalid","mcp_server_headers_invalid","mcp_server_key_invalid","mcp_server_key_reserved","mcp_server_key_taken","mcp_server_kind_change_refused","mcp_server_not_from_directory","mcp_server_not_mcp","mcp_server_package_invalid","mcp_server_plugin_bundled","mcp_server_plugin_off","mcp_server_response_too_large","mcp_server_return_to_invalid","mcp_server_runtime_invalid","mcp_server_switched_off","mcp_server_unreachable","mcp_server_url_invalid","mcp_server_version_unpinned","method_not_allowed","not_acceptable","not_found","not_implemented","org_role_insufficient","org_suspended","payment_required","plugin_moved","plugin_name_taken","plugin_request_invalid","plugin_server_key_reserved","plugin_server_key_taken","plugin_server_probe_failed","plugin_server_required","plugin_skill_invalid","plugin_source_address_refused","plugin_source_empty","plugin_source_invalid","plugin_source_not_found","plugin_source_not_public","plugin_source_too_large","plugin_source_unreachable","plugin_source_unsupported","plugin_switched_off","plugin_undeliverable","precondition_failed","rate_limited","request_canceled","request_timeout","request_too_large","service_unavailable","skill_slug_reserved","unauthenticated","unsupported_media_type","validation_failed"],"minLength":1,"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"error":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"errors":{"items":{"additionalProperties":false,"properties":{"location":{"description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'","type":"string","uniqueKey":"errors.items.[INDEX].location","typeLabel":"string"},"message":{"description":"Error message text","type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"value":{"description":"The value at the given location","uniqueKey":"errors.items.[INDEX].value","typeLabel":"any"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"errors","typeLabel":"object[]"}},"required":["error","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"account_deleting","error":"\u003cstring>","errors":[{"location":"\u003cstring>","message":"\u003cstring>","value":"\u003cunknown>"}]}}},"exampleType":"generated"}},"description":"Service Unavailable","exampleType":"generated"}},"security":{"bee0a17c-510e-458f-badd-9f7e730b0e5f":{"bearerAuth":{"bearerFormat":"JWT","scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"501762e1-f71f-4ad9-9f4e-88ba1a1296d8":{"url":"https://api.runaether.dev"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"bearerFormat":"JWT","scheme":"bearer","type":"http","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/openapi.json"},"subdomain":"aether-c4587800","siteName":"Aether","title":"Update agent profile - Aether","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T13:40:00.352Z","originalFileLocation":"api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";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=\"dark\"}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=\"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value. Use this tool when you need to: - Rename a profile, or change its model and reasoning effort - Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent Examples: - PATCH /agent-profiles/{profileID} {\u0026quot;model\u0026quot;: \u0026quot;claude-sonnet-5-5\u0026quot;, \u0026quot;reasoning_effort\u0026quot;: null} - PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\u0026quot;runs_on\u0026quot;: {\u0026quot;runs_on\u0026quot;: \u0026quot;stored\u0026quot;, \u0026quot;connection_id\u0026quot;: \u0026quot;0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\u0026quot;}, \u0026quot;fallback\u0026quot;: {\u0026quot;mode\u0026quot;: \u0026quot;any_usable\u0026quot;, \u0026quot;then\u0026quot;: {\u0026quot;runs_on\u0026quot;: \u0026quot;aether\u0026quot;}}} Hints: - profileID is the profile\u0026#x27;s uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model\u0026#x27;s default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid. - The model and effort are checked together with the profile\u0026#x27;s values of those the patch omits (400 for a pair the catalog does not pair with the profile\u0026#x27;s agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither. - A profile keeps its agent: agent_type is absent or names the profile\u0026#x27;s own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort. - runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile\u0026#x27;s agent. - fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder\u0026#x27;s held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none. - Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected. - A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback. - Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller\u0026#x27;s agent\u0026#x27;s own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference. - A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder\u0026#x27;s for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin\u0026#x27;s harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback. - Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it. - Restricted to an owner or admin of the profile\u0026#x27;s organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host\u0026#x27;s grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Aether\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/aether-c4587800/RjJo40w5LK5jrZHD/_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/aether-c4587800/RjJo40w5LK5jrZHD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/aether-c4587800/RjJo40w5LK5jrZHD/_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/aether-c4587800/RjJo40w5LK5jrZHD/_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/aether-c4587800/RjJo40w5LK5jrZHD/_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/aether-c4587800/RjJo40w5LK5jrZHD/_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/aether-c4587800/RjJo40w5LK5jrZHD/_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/aether-c4587800/RjJo40w5LK5jrZHD/_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/aether-c4587800/RjJo40w5LK5jrZHD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update agent profile - Aether\">\u003cmeta data-mint-head property=\"og:description\" content=\"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value. Use this tool when you need to: - Rename a profile, or change its model and reasoning effort - Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent Examples: - PATCH /agent-profiles/{profileID} {\u0026quot;model\u0026quot;: \u0026quot;claude-sonnet-5-5\u0026quot;, \u0026quot;reasoning_effort\u0026quot;: null} - PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\u0026quot;runs_on\u0026quot;: {\u0026quot;runs_on\u0026quot;: \u0026quot;stored\u0026quot;, \u0026quot;connection_id\u0026quot;: \u0026quot;0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\u0026quot;}, \u0026quot;fallback\u0026quot;: {\u0026quot;mode\u0026quot;: \u0026quot;any_usable\u0026quot;, \u0026quot;then\u0026quot;: {\u0026quot;runs_on\u0026quot;: \u0026quot;aether\u0026quot;}}} Hints: - profileID is the profile\u0026#x27;s uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model\u0026#x27;s default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid. - The model and effort are checked together with the profile\u0026#x27;s values of those the patch omits (400 for a pair the catalog does not pair with the profile\u0026#x27;s agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither. - A profile keeps its agent: agent_type is absent or names the profile\u0026#x27;s own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort. - runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile\u0026#x27;s agent. - fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder\u0026#x27;s held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none. - Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected. - A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback. - Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller\u0026#x27;s agent\u0026#x27;s own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference. - A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder\u0026#x27;s for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin\u0026#x27;s harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback. - Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it. - Restricted to an owner or admin of the profile\u0026#x27;s organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host\u0026#x27;s grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Aether\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://aether-c4587800.mintlify.app/_mintlify/api/og/v2?division=Agent+Profiles\u0026amp;title=Update+agent+profile\u0026amp;description=Changes+an+agent+profile+by+merge+patch%2C+answering+the+profile%3A+an+absent+field+keeps+its+value.%0A%0AUse+this+tool+when+you+need+to%3A%0A-+Rename+a+profile%2C+or+change+\u0026amp;theme=45bbe8413141f5c0b81fcea8\u0026amp;signature=7db6f6573004d763c8aec021f932eb1f71da367316fa759cb890a1610de91642\">\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=\"Update agent profile - Aether\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value. Use this tool when you need to: - Rename a profile, or change its model and reasoning effort - Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent Examples: - PATCH /agent-profiles/{profileID} {\u0026quot;model\u0026quot;: \u0026quot;claude-sonnet-5-5\u0026quot;, \u0026quot;reasoning_effort\u0026quot;: null} - PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\u0026quot;runs_on\u0026quot;: {\u0026quot;runs_on\u0026quot;: \u0026quot;stored\u0026quot;, \u0026quot;connection_id\u0026quot;: \u0026quot;0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\u0026quot;}, \u0026quot;fallback\u0026quot;: {\u0026quot;mode\u0026quot;: \u0026quot;any_usable\u0026quot;, \u0026quot;then\u0026quot;: {\u0026quot;runs_on\u0026quot;: \u0026quot;aether\u0026quot;}}} Hints: - profileID is the profile\u0026#x27;s uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model\u0026#x27;s default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid. - The model and effort are checked together with the profile\u0026#x27;s values of those the patch omits (400 for a pair the catalog does not pair with the profile\u0026#x27;s agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither. - A profile keeps its agent: agent_type is absent or names the profile\u0026#x27;s own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort. - runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile\u0026#x27;s agent. - fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder\u0026#x27;s held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none. - Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected. - A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback. - Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller\u0026#x27;s agent\u0026#x27;s own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference. - A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder\u0026#x27;s for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin\u0026#x27;s harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback. - Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it. - Restricted to an owner or admin of the profile\u0026#x27;s organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host\u0026#x27;s grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://aether-c4587800.mintlify.app/_mintlify/api/og/v2?division=Agent+Profiles\u0026amp;title=Update+agent+profile\u0026amp;description=Changes+an+agent+profile+by+merge+patch%2C+answering+the+profile%3A+an+absent+field+keeps+its+value.%0A%0AUse+this+tool+when+you+need+to%3A%0A-+Rename+a+profile%2C+or+change+\u0026amp;theme=45bbe8413141f5c0b81fcea8\u0026amp;signature=7db6f6573004d763c8aec021f932eb1f71da367316fa759cb890a1610de91642\">\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/aether-c4587800/RjJo40w5LK5jrZHD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Aether\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#9184ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.runaether.dev/#organization\",\"name\":\"Aether\",\"url\":\"https://docs.runaether.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/aether-c4587800/hrC9bOYLpJ53VNbo/logo/light.svg?fit=max\u0026auto=format\u0026n=hrC9bOYLpJ53VNbo\u0026q=85\u0026s=cdf40b8647da8a5d82a91e289a1958f7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.runaether.dev#website\",\"name\":\"Aether\",\"url\":\"https://docs.runaether.dev\",\"publisher\":{\"@id\":\"https://docs.runaether.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid#webpage\",\"url\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid\",\"name\":\"Update agent profile\",\"description\":\"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value. Use this tool when you need to: - Rename a profile, or change its model and reasoning effort - Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent Examples: - PATCH /agent-profiles/{profileID} {\\\"model\\\": \\\"claude-sonnet-5-5\\\", \\\"reasoning_effort\\\": null} - PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\\\"runs_on\\\": {\\\"runs_on\\\": \\\"stored\\\", \\\"connection_id\\\": \\\"0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\\\"}, \\\"fallback\\\": {\\\"mode\\\": \\\"any_usable\\\", \\\"then\\\": {\\\"runs_on\\\": \\\"aether\\\"}}} Hints: - profileID is the profile's uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model's default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid. - The model and effort are checked together with the profile's values of those the patch omits (400 for a pair the catalog does not pair with the profile's agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither. - A profile keeps its agent: agent_type is absent or names the profile's own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort. - runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile's agent. - fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder's held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none. - Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected. - A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback. - Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller's agent's own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference. - A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder's for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin's harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback. - Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it. - Restricted to an owner or admin of the profile's organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.\",\"dateModified\":\"2026-10-29T13:40:00.352Z\",\"isPartOf\":{\"@id\":\"https://docs.runaether.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agent Profiles\",\"item\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/get-orgs-by-orgid-agent-profiles\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update agent profile\",\"item\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid#apireference\",\"headline\":\"Update agent profile\",\"name\":\"Update agent profile\",\"description\":\"Changes an agent profile by merge patch, answering the profile: an absent field keeps its value. Use this tool when you need to: - Rename a profile, or change its model and reasoning effort - Change or remove what a profile pins its tasks to run on, or its fallback for a plan whose window is spent Examples: - PATCH /agent-profiles/{profileID} {\\\"model\\\": \\\"claude-sonnet-5-5\\\", \\\"reasoning_effort\\\": null} - PATCH /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21 {\\\"runs_on\\\": {\\\"runs_on\\\": \\\"stored\\\", \\\"connection_id\\\": \\\"0b9d3e57-2c1a-4f6e-8d7b-5a4c3e2f1d09\\\"}, \\\"fallback\\\": {\\\"mode\\\": \\\"any_usable\\\", \\\"then\\\": {\\\"runs_on\\\": \\\"aether\\\"}}} Hints: - profileID is the profile's uuid. Fields: name (1 to 100 characters, stored trimmed, 400 when blank once trimmed), agent_type, model, reasoning_effort (null clears it to the model's default), runs_on and fallback. The schema answers 422 for a patch naming no field, a value outside its type or enum, an unknown field, or a profileID that is not a uuid. - The model and effort are checked together with the profile's values of those the patch omits (400 for a pair the catalog does not pair with the profile's agent), and written only while the profile still holds the ones they were checked against (409 agent_profile_changed otherwise); naming them as they are writes neither. - A profile keeps its agent: agent_type is absent or names the profile's own; another is refused with 409 agent_profile_harness_fixed, or with 400 when the catalog does not pair it with the model and effort. - runs_on absent, or naming the connection the profile already pins, keeps the stored pin, whoever holds it; default pins nobody; aether, Aether inference (Claude Code and Codex only); stored, a connection the caller holds that works with the profile's agent. - fallback belongs to a profile that pins a plan, whose window can be spent: none stops, named takes the connection or Aether inference, and any_usable tries the pinned connection holder's held connections before its optional then hop. Only that holder writes a fallback other than none; anyone else omits it, sends the saved one back, or sets none. - Beside a kept pin, omitting fallback keeps it; sending the saved policy back is the same keep, and is possible only while its hop is still connected, because a read omits the connection_id a named write requires: omit fallback to keep a policy whose hop was disconnected. - A patch that replaces the pin brings its own fallback: omitted while the saved fallback is not none, it is refused with 409 fallback_required_with_pin; omitted while it is none, it stays none. Unpinning (runs_on default) clears the fallback. - Refused with 409 for a name another profile has. The pin is refused with 404 connection_not_held for a connection the caller does not hold (the message names the agent to connect one for), 409 connection_harness_mismatch for a connection of another agent, 409 connection_agent_only for the caller's agent's own ChatGPT login, 409 aether_inference_unserved for Aether inference on OpenCode, and 409 aether_inference_unavailable where this deployment serves no Aether inference. - A fallback is refused with 409 fallback_requires_pin beside anything but a plan pin, 404 connection_not_held when a non-holder writes one or the named connection is not the holder's for the agent, 409 fallback_is_own_connection when the named connection is the pin itself, 409 agent_profile_changed when the pin a kept-pin fallback write was checked against changed before it landed, and the pin's harness refusals (409 connection_harness_mismatch, connection_agent_only, aether_inference_unserved, aether_inference_unavailable) worded for the fallback. - Use getAgentProfile instead to read the profile before changing it, and deleteAgentProfile to remove it. - Restricted to an owner or admin of the profile's organization, checked after the body is validated: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.\",\"url\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid\",\"mainEntityOfPage\":{\"@id\":\"https://docs.runaether.dev/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid#webpage\"},\"dateModified\":\"2026-10-29T13:40:00.352Z\",\"publisher\":{\"@id\":\"https://docs.runaether.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.runaether.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Aether\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Aether","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"Concepts","pages":[{"title":"Concepts","href":"/concepts/overview"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"API Overview","href":"/api-reference/overview"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Release Notes","href":"/api-reference/release-notes"}]},{"group":"Projects","pages":[{"title":"List projects","openapi":"api-reference/openapi.json GET /orgs/{orgID}/projects","href":"/api-reference/endpoints/projects/get-orgs-by-orgid-projects"},{"title":"Create project","openapi":"api-reference/openapi.json POST /orgs/{orgID}/projects","href":"/api-reference/endpoints/projects/post-orgs-by-orgid-projects"},{"title":"Get project","openapi":"api-reference/openapi.json GET /projects/{projectID}","href":"/api-reference/endpoints/projects/get-projects-by-projectid"},{"title":"Get project runtime options","openapi":"api-reference/openapi.json GET /projects/{projectID}/runtime-options","href":"/api-reference/endpoints/projects/get-projects-by-projectid-runtime-options"},{"title":"Update project","openapi":"api-reference/openapi.json PATCH /projects/{projectID}","href":"/api-reference/endpoints/projects/patch-projects-by-projectid"}]},{"group":"Workspaces","pages":[{"title":"List workspaces for a project","openapi":"api-reference/openapi.json GET /projects/{projectID}/workspaces","href":"/api-reference/endpoints/workspaces/get-projects-by-projectid-workspaces"},{"title":"List workspaces across all projects","openapi":"api-reference/openapi.json GET /orgs/{orgID}/workspaces","href":"/api-reference/endpoints/workspaces/get-orgs-by-orgid-workspaces"},{"title":"Get a workspace","openapi":"api-reference/openapi.json GET /workspaces/{workspaceID}","href":"/api-reference/endpoints/workspaces/get-workspaces-by-workspaceid"},{"title":"Update workspace settings","openapi":"api-reference/openapi.json PATCH /workspaces/{workspaceID}","href":"/api-reference/endpoints/workspaces/patch-workspaces-by-workspaceid"},{"title":"Delete a workspace","openapi":"api-reference/openapi.json DELETE /workspaces/{workspaceID}","href":"/api-reference/endpoints/workspaces/delete-workspaces-by-workspaceid"},{"title":"Connect to a workspace","openapi":"api-reference/openapi.json POST /workspaces/{workspaceID}/connect","href":"/api-reference/endpoints/workspaces/post-workspaces-by-workspaceid-connect"},{"title":"Create an authenticated preview","openapi":"api-reference/openapi.json POST /workspaces/{workspaceID}/preview-auth","href":"/api-reference/endpoints/workspaces/post-workspaces-by-workspaceid-preview-auth"},{"title":"Stop a workspace","openapi":"api-reference/openapi.json POST /workspaces/{workspaceID}/stop","href":"/api-reference/endpoints/workspaces/post-workspaces-by-workspaceid-stop"}]},{"group":"Tasks","pages":[{"title":"List tasks","openapi":"api-reference/openapi.json GET /orgs/{orgID}/tasks","href":"/api-reference/endpoints/tasks/get-orgs-by-orgid-tasks"},{"title":"Search conversations","openapi":"api-reference/openapi.json GET /orgs/{orgID}/tasks/search","href":"/api-reference/endpoints/tasks/get-orgs-by-orgid-tasks-search"},{"title":"Create a task","openapi":"api-reference/openapi.json POST /orgs/{orgID}/tasks","href":"/api-reference/endpoints/tasks/post-orgs-by-orgid-tasks"},{"title":"Save a task to GitHub","openapi":"api-reference/openapi.json POST /tasks/{taskID}/repository","href":"/api-reference/endpoints/tasks/post-tasks-by-taskid-repository"},{"title":"Download a task's work as a zip","openapi":"api-reference/openapi.json GET /tasks/{taskID}/download","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-download"},{"title":"Get a task","openapi":"api-reference/openapi.json GET /tasks/{taskID}","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid"},{"title":"Get the tree containing a task","openapi":"api-reference/openapi.json GET /tasks/{taskID}/tree","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-tree"},{"title":"Get a task's plan","openapi":"api-reference/openapi.json GET /tasks/{taskID}/plan","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-plan"},{"title":"Get how a task runs","openapi":"api-reference/openapi.json GET /tasks/{taskID}/runtime","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-runtime"},{"title":"List a task's activity","openapi":"api-reference/openapi.json GET /tasks/{taskID}/activity","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-activity"},{"title":"List media captured for a task","openapi":"api-reference/openapi.json GET /tasks/{taskID}/media","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-media"},{"title":"Hide a capture from the proof page and the Verify panel, or return it to them","openapi":"api-reference/openapi.json PATCH /tasks/{taskID}/media/{mediaID}","href":"/api-reference/endpoints/tasks/patch-tasks-by-taskid-media-by-mediaid"},{"title":"List the cloud devices a task is currently holding","openapi":"api-reference/openapi.json GET /tasks/{taskID}/device-sessions","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-device-sessions"},{"title":"List the provider-native subagents a task owns","openapi":"api-reference/openapi.json GET /tasks/{taskID}/subagents","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-subagents"},{"title":"Read one subagent's transcript","openapi":"api-reference/openapi.json GET /tasks/{taskID}/subagents/{toolCallID}/events","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-subagents-by-toolcallid-events"},{"title":"Get the content of one referenced conversation attachment","openapi":"api-reference/openapi.json GET /tasks/{taskID}/messages/{messageID}/attachments/{index}","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-messages-by-messageid-attachments-by-index"},{"title":"Change a task","openapi":"api-reference/openapi.json PATCH /tasks/{taskID}","href":"/api-reference/endpoints/tasks/patch-tasks-by-taskid"},{"title":"Read accepted open messages and their canonical replacements","openapi":"api-reference/openapi.json GET /tasks/{taskID}/conversation/live","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-conversation-live"},{"title":"Read one task's model spend by what paid for it","openapi":"api-reference/openapi.json GET /tasks/{taskID}/spend","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-spend"},{"title":"Read what one task's metered runs have used so far","openapi":"api-reference/openapi.json GET /tasks/{taskID}/runtime-usage","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-runtime-usage"},{"title":"List a task's conversation turns","openapi":"api-reference/openapi.json GET /tasks/{taskID}/turns","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-turns"},{"title":"Get a task conversation turn","openapi":"api-reference/openapi.json GET /tasks/{taskID}/turns/{turnID}","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-turns-by-turnid"},{"title":"List the messages a task conversation turn owns","openapi":"api-reference/openapi.json GET /tasks/{taskID}/turns/{turnID}/messages","href":"/api-reference/endpoints/tasks/get-tasks-by-taskid-turns-by-turnid-messages"},{"title":"Remove a queued message from a task","openapi":"api-reference/openapi.json DELETE /tasks/{taskID}/messages/{messageID}","href":"/api-reference/endpoints/tasks/delete-tasks-by-taskid-messages-by-messageid"},{"title":"Send a task a message","openapi":"api-reference/openapi.json POST /tasks/{taskID}/messages","href":"/api-reference/endpoints/tasks/post-tasks-by-taskid-messages"},{"title":"Stop a running task","openapi":"api-reference/openapi.json POST /tasks/{taskID}/stop","href":"/api-reference/endpoints/tasks/post-tasks-by-taskid-stop"},{"title":"Create a task from an imported local agent session","openapi":"api-reference/openapi.json POST /orgs/{orgID}/tasks/teleport","href":"/api-reference/endpoints/tasks/post-orgs-by-orgid-tasks-teleport"}]},{"group":"Environment Variables","pages":[{"title":"List project environment variables","openapi":"api-reference/openapi.json GET /projects/{projectID}/env-vars","href":"/api-reference/endpoints/env-vars/get-projects-by-projectid-env-vars"},{"title":"Import project environment variables","openapi":"api-reference/openapi.json POST /projects/{projectID}/env-vars/import","href":"/api-reference/endpoints/env-vars/post-projects-by-projectid-env-vars-import"},{"title":"Get project environment variable","openapi":"api-reference/openapi.json GET /projects/{projectID}/env-vars/{key}","href":"/api-reference/endpoints/env-vars/get-projects-by-projectid-env-vars-by-key"},{"title":"Set project environment variable","openapi":"api-reference/openapi.json PUT /projects/{projectID}/env-vars/{key}","href":"/api-reference/endpoints/env-vars/put-projects-by-projectid-env-vars-by-key"},{"title":"Delete project environment variable","openapi":"api-reference/openapi.json DELETE /projects/{projectID}/env-vars/{key}","href":"/api-reference/endpoints/env-vars/delete-projects-by-projectid-env-vars-by-key"}]},{"group":"Secret Files","pages":[{"title":"List project secret files","openapi":"api-reference/openapi.json GET /projects/{projectID}/secret-files","href":"/api-reference/endpoints/secret-files/get-projects-by-projectid-secret-files"},{"title":"Bulk upload project secret files","openapi":"api-reference/openapi.json POST /projects/{projectID}/secret-files/bulk","href":"/api-reference/endpoints/secret-files/post-projects-by-projectid-secret-files-bulk"},{"title":"Get project secret file","openapi":"api-reference/openapi.json GET /projects/{projectID}/secret-files/{fileKey}","href":"/api-reference/endpoints/secret-files/get-projects-by-projectid-secret-files-by-filekey"},{"title":"Get project secret file content","openapi":"api-reference/openapi.json GET /projects/{projectID}/secret-files/{fileKey}/content","href":"/api-reference/endpoints/secret-files/get-projects-by-projectid-secret-files-by-filekey-content"},{"title":"Set project secret file","openapi":"api-reference/openapi.json PUT /projects/{projectID}/secret-files/{fileKey}","href":"/api-reference/endpoints/secret-files/put-projects-by-projectid-secret-files-by-filekey"},{"title":"Delete project secret file","openapi":"api-reference/openapi.json DELETE /projects/{projectID}/secret-files/{fileKey}","href":"/api-reference/endpoints/secret-files/delete-projects-by-projectid-secret-files-by-filekey"}]},{"group":"Skills","pages":[{"title":"List project skills","openapi":"api-reference/openapi.json GET /projects/{projectID}/skills","href":"/api-reference/endpoints/skills/get-projects-by-projectid-skills"},{"title":"List user skills","openapi":"api-reference/openapi.json GET /skills","href":"/api-reference/endpoints/skills/get-skills"},{"title":"Upload user skill","openapi":"api-reference/openapi.json POST /skills","href":"/api-reference/endpoints/skills/post-skills"},{"title":"Get user skill","openapi":"api-reference/openapi.json GET /skills/{slug}","href":"/api-reference/endpoints/skills/get-skills-by-slug"},{"title":"List user skill files","openapi":"api-reference/openapi.json GET /skills/{slug}/files","href":"/api-reference/endpoints/skills/get-skills-by-slug-files"},{"title":"Delete user skill","openapi":"api-reference/openapi.json DELETE /skills/{slug}","href":"/api-reference/endpoints/skills/delete-skills-by-slug"},{"title":"List a project's default skills","openapi":"api-reference/openapi.json GET /projects/{projectID}/default-skills","href":"/api-reference/endpoints/skills/get-projects-by-projectid-default-skills"},{"title":"Enable a default skill on a project","openapi":"api-reference/openapi.json PUT /projects/{projectID}/default-skills/{slug}","href":"/api-reference/endpoints/skills/put-projects-by-projectid-default-skills-by-slug"},{"title":"Disable a default skill on a project","openapi":"api-reference/openapi.json DELETE /projects/{projectID}/default-skills/{slug}","href":"/api-reference/endpoints/skills/delete-projects-by-projectid-default-skills-by-slug"}]},{"group":"Automations","pages":[{"title":"List project automations","openapi":"api-reference/openapi.json GET /projects/{projectID}/automations","href":"/api-reference/endpoints/automations/get-projects-by-projectid-automations"},{"title":"Get automation","openapi":"api-reference/openapi.json GET /automations/{automationID}","href":"/api-reference/endpoints/automations/get-automations-by-automationid"},{"title":"Delete automation","openapi":"api-reference/openapi.json DELETE /automations/{automationID}","href":"/api-reference/endpoints/automations/delete-automations-by-automationid"},{"title":"Update automation","openapi":"api-reference/openapi.json PATCH /automations/{automationID}","href":"/api-reference/endpoints/automations/patch-automations-by-automationid"},{"title":"List automation runs","openapi":"api-reference/openapi.json GET /automations/{automationID}/runs","href":"/api-reference/endpoints/automations/get-automations-by-automationid-runs"},{"title":"Create project automation","openapi":"api-reference/openapi.json POST /projects/{projectID}/automations","href":"/api-reference/endpoints/automations/post-projects-by-projectid-automations"}]},{"group":"Agent Profiles","pages":[{"title":"List agent profiles","openapi":"api-reference/openapi.json GET /orgs/{orgID}/agent-profiles","href":"/api-reference/endpoints/agent-profiles/get-orgs-by-orgid-agent-profiles"},{"title":"Create agent profile","openapi":"api-reference/openapi.json POST /orgs/{orgID}/agent-profiles","href":"/api-reference/endpoints/agent-profiles/post-orgs-by-orgid-agent-profiles"},{"title":"Get agent profile","openapi":"api-reference/openapi.json GET /agent-profiles/{profileID}","description":"Reads one agent profile, in the organization that owns it.\n\nUse this tool when you need to:\n- Load a profile's agent, model, effort, pin and fallback before changing it with patchAgentProfile\n- See which connection a profile pins and who holds it\n\nExamples:\n- GET /agent-profiles/{profileID}\n- GET /agent-profiles/6f1c2a9e-3b7d-4c55-9a2e-0d8b1f4e7c21\n\nHints:\n- profileID is the profile's uuid (422 when not a uuid).\n- Answers every field patchAgentProfile writes, under the same name (name, agent_type, model, reasoning_effort, runs_on, fallback), beside id, created_at and updated_at; a stored pin carries the connection's id, option, name and owner (its holder's display name, else their email).\n- reasoning_effort is null for the model's default, and a stored named fallback hop whose connection was disconnected is read without its connection_id.\n- Use listAgentProfiles instead for every profile of an organization.\n- Any owner, admin or member of the profile's organization: a profile the caller cannot see (none, or in an organization they do not belong to) is 404, a viewer or billing member is refused with 403 org_role_insufficient, a suspended organization with 403 org_suspended, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.","href":"/api-reference/endpoints/agent-profiles/get-agent-profiles-by-profileid"},{"title":"Update agent profile","openapi":"api-reference/openapi.json PATCH /agent-profiles/{profileID}","href":"/api-reference/endpoints/agent-profiles/patch-agent-profiles-by-profileid"},{"title":"Delete agent profile","openapi":"api-reference/openapi.json DELETE /agent-profiles/{profileID}","description":"Deletes an agent profile, answering 204.\n\nUse this tool when you need to:\n- Remove a profile the organization no longer uses\n- Clean up a profile once no automation, integration route or project setting uses it\n\nExamples:\n- DELETE /agent-profiles/{profileID}\n\nHints:\n- profileID is the profile's uuid (422 when not a uuid).\n- Refused with 409 while an automation, an integration route (a Slack channel route, a Linear issue route or a Sentry project link) or a project's settings (its default agent profile, or its or a repository's PR review profile) use it; point those elsewhere first. A deleted automation no longer holds its profile.\n- Use patchAgentProfile instead to change the profile and keep it.\n- Restricted to an owner or admin of the profile's organization: a member is refused with 403 control_forbidden, a viewer or billing member with 403 org_role_insufficient, a suspended organization with 403 org_suspended, a profile the caller cannot see with 404, and an agent host's grant with 403 agent_host_route_not_allowed; 503 when the membership check is unavailable.","href":"/api-reference/endpoints/agent-profiles/delete-agent-profiles-by-profileid"}]},{"group":"MCP Servers","pages":[{"title":"List the organization's MCP servers","openapi":"api-reference/openapi.json GET /orgs/{orgID}/mcp-servers","href":"/api-reference/endpoints/mcp-servers/get-orgs-by-orgid-mcp-servers"},{"title":"Probe how a remote MCP server authenticates","openapi":"api-reference/openapi.json POST /orgs/{orgID}/mcp-servers/probe","href":"/api-reference/endpoints/mcp-servers/post-orgs-by-orgid-mcp-servers-probe"},{"title":"Add an MCP server to the organization's catalog","openapi":"api-reference/openapi.json POST /orgs/{orgID}/mcp-servers","href":"/api-reference/endpoints/mcp-servers/post-orgs-by-orgid-mcp-servers"},{"title":"Update an MCP server","openapi":"api-reference/openapi.json PATCH /mcp-servers/{mcpServerID}","href":"/api-reference/endpoints/mcp-servers/patch-mcp-servers-by-mcpserverid"},{"title":"Delete an MCP server","openapi":"api-reference/openapi.json DELETE /mcp-servers/{mcpServerID}","href":"/api-reference/endpoints/mcp-servers/delete-mcp-servers-by-mcpserverid"},{"title":"Preview updating a directory server from its entry","openapi":"api-reference/openapi.json POST /mcp-servers/{mcpServerID}/directory-update-preview","href":"/api-reference/endpoints/mcp-servers/post-mcp-servers-by-mcpserverid-directory-update-preview"},{"title":"Update a directory server to the revision its preview showed","openapi":"api-reference/openapi.json POST /mcp-servers/{mcpServerID}/directory-update","href":"/api-reference/endpoints/mcp-servers/post-mcp-servers-by-mcpserverid-directory-update"},{"title":"List the MCP servers a project enables","openapi":"api-reference/openapi.json GET /projects/{projectID}/mcp-servers","href":"/api-reference/endpoints/mcp-servers/get-projects-by-projectid-mcp-servers"},{"title":"Check whether your tasks in a project can start","openapi":"api-reference/openapi.json GET /projects/{projectID}/mcp-server-readiness","href":"/api-reference/endpoints/mcp-servers/get-projects-by-projectid-mcp-server-readiness"},{"title":"Enable an MCP server on a project","openapi":"api-reference/openapi.json PUT /projects/{projectID}/mcp-servers/{mcpServerID}","href":"/api-reference/endpoints/mcp-servers/put-projects-by-projectid-mcp-servers-by-mcpserverid"},{"title":"Disable an MCP server on a project","openapi":"api-reference/openapi.json DELETE /projects/{projectID}/mcp-servers/{mcpServerID}","href":"/api-reference/endpoints/mcp-servers/delete-projects-by-projectid-mcp-servers-by-mcpserverid"},{"title":"List your MCP server connections and the organization's","openapi":"api-reference/openapi.json GET /orgs/{orgID}/mcp-server-connections","href":"/api-reference/endpoints/mcp-servers/get-orgs-by-orgid-mcp-server-connections"},{"title":"Connect an MCP server with your API key","openapi":"api-reference/openapi.json PUT /mcp-servers/{mcpServerID}/connection","href":"/api-reference/endpoints/mcp-servers/put-mcp-servers-by-mcpserverid-connection"},{"title":"Disconnect your MCP server connection","openapi":"api-reference/openapi.json DELETE /mcp-servers/{mcpServerID}/connection","href":"/api-reference/endpoints/mcp-servers/delete-mcp-servers-by-mcpserverid-connection"},{"title":"Connect an MCP server for the organization","openapi":"api-reference/openapi.json PUT /mcp-servers/{mcpServerID}/org-connection","href":"/api-reference/endpoints/mcp-servers/put-mcp-servers-by-mcpserverid-org-connection"},{"title":"Disconnect the organization's MCP server connection","openapi":"api-reference/openapi.json DELETE /mcp-servers/{mcpServerID}/org-connection","href":"/api-reference/endpoints/mcp-servers/delete-mcp-servers-by-mcpserverid-org-connection"},{"title":"Connect an MCP server with OAuth","openapi":"api-reference/openapi.json POST /mcp-servers/{mcpServerID}/connection/oauth","href":"/api-reference/endpoints/mcp-servers/post-mcp-servers-by-mcpserverid-connection-oauth"},{"title":"Connect an MCP server with OAuth for the organization","openapi":"api-reference/openapi.json POST /mcp-servers/{mcpServerID}/org-connection/oauth","href":"/api-reference/endpoints/mcp-servers/post-mcp-servers-by-mcpserverid-org-connection-oauth"},{"title":"Finish connecting an MCP server with OAuth","openapi":"api-reference/openapi.json POST /mcp-servers/oauth/callback","href":"/api-reference/endpoints/mcp-servers/post-mcp-servers-oauth-callback"},{"title":"List the organization's OAuth apps","openapi":"api-reference/openapi.json GET /orgs/{orgID}/mcp-oauth-apps","href":"/api-reference/endpoints/mcp-servers/get-orgs-by-orgid-mcp-oauth-apps"},{"title":"Read the redirect URI an OAuth app registers","openapi":"api-reference/openapi.json GET /orgs/{orgID}/mcp-oauth-apps/redirect-uri","href":"/api-reference/endpoints/mcp-servers/get-orgs-by-orgid-mcp-oauth-apps-redirect-uri"},{"title":"Save the organization's OAuth app for an issuer","openapi":"api-reference/openapi.json PUT /orgs/{orgID}/mcp-oauth-apps","href":"/api-reference/endpoints/mcp-servers/put-orgs-by-orgid-mcp-oauth-apps"},{"title":"Delete the organization's OAuth app for an issuer","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/mcp-oauth-apps","href":"/api-reference/endpoints/mcp-servers/delete-orgs-by-orgid-mcp-oauth-apps"}]},{"group":"Plugins","pages":[{"title":"List the official plugin marketplaces","openapi":"api-reference/openapi.json GET /orgs/{orgID}/plugin-marketplaces","href":"/api-reference/endpoints/plugins/get-orgs-by-orgid-plugin-marketplaces"},{"title":"List the plugins a marketplace offers","openapi":"api-reference/openapi.json POST /orgs/{orgID}/plugin-marketplaces/browse","href":"/api-reference/endpoints/plugins/post-orgs-by-orgid-plugin-marketplaces-browse"},{"title":"List the organization's plugins","openapi":"api-reference/openapi.json GET /orgs/{orgID}/plugins","href":"/api-reference/endpoints/plugins/get-orgs-by-orgid-plugins"},{"title":"Install a plugin in the organization","openapi":"api-reference/openapi.json POST /orgs/{orgID}/plugins","href":"/api-reference/endpoints/plugins/post-orgs-by-orgid-plugins"},{"title":"Preview updating a plugin","openapi":"api-reference/openapi.json POST /plugins/{pluginID}/update-preview","href":"/api-reference/endpoints/plugins/post-plugins-by-pluginid-update-preview"},{"title":"Update a plugin to the revision its preview showed","openapi":"api-reference/openapi.json POST /plugins/{pluginID}/update","href":"/api-reference/endpoints/plugins/post-plugins-by-pluginid-update"},{"title":"Change a plugin's organization-wide defaults","openapi":"api-reference/openapi.json PATCH /plugins/{pluginID}","href":"/api-reference/endpoints/plugins/patch-plugins-by-pluginid"},{"title":"Uninstall a plugin","openapi":"api-reference/openapi.json DELETE /plugins/{pluginID}","href":"/api-reference/endpoints/plugins/delete-plugins-by-pluginid"},{"title":"List the plugins a project enables","openapi":"api-reference/openapi.json GET /projects/{projectID}/plugins","href":"/api-reference/endpoints/plugins/get-projects-by-projectid-plugins"},{"title":"Enable a plugin on a project","openapi":"api-reference/openapi.json PUT /projects/{projectID}/plugins/{pluginID}","href":"/api-reference/endpoints/plugins/put-projects-by-projectid-plugins-by-pluginid"},{"title":"Disable a plugin on a project","openapi":"api-reference/openapi.json DELETE /projects/{projectID}/plugins/{pluginID}","href":"/api-reference/endpoints/plugins/delete-projects-by-projectid-plugins-by-pluginid"},{"title":"List Aether's integration directory","openapi":"api-reference/openapi.json GET /orgs/{orgID}/integration-directory","href":"/api-reference/endpoints/plugins/get-orgs-by-orgid-integration-directory"},{"title":"Search integrations by name","openapi":"api-reference/openapi.json GET /orgs/{orgID}/integration-search","href":"/api-reference/endpoints/plugins/get-orgs-by-orgid-integration-search"},{"title":"Search the MCP registry","openapi":"api-reference/openapi.json GET /orgs/{orgID}/integration-search/registry","href":"/api-reference/endpoints/plugins/get-orgs-by-orgid-integration-search-registry"},{"title":"Install an integration of Aether's integration directory","openapi":"api-reference/openapi.json POST /orgs/{orgID}/integration-directory/{key}/install","href":"/api-reference/endpoints/plugins/post-orgs-by-orgid-integration-directory-by-key-install"}]},{"group":"Usage","pages":[{"title":"Get usage summary","openapi":"api-reference/openapi.json GET /orgs/{orgID}/usage/summary","href":"/api-reference/endpoints/usage/get-orgs-by-orgid-usage-summary"},{"title":"List the tasks that used anything in a range","openapi":"api-reference/openapi.json GET /orgs/{orgID}/usage/tasks","href":"/api-reference/endpoints/usage/get-orgs-by-orgid-usage-tasks"}]},{"group":"Profile","pages":[{"title":"Get profile","openapi":"api-reference/openapi.json GET /profile","href":"/api-reference/endpoints/profile/get-profile"},{"title":"Delete your account","openapi":"api-reference/openapi.json DELETE /profile","href":"/api-reference/endpoints/profile/delete-profile"},{"title":"Complete onboarding","openapi":"api-reference/openapi.json POST /profile/onboarding/complete","href":"/api-reference/endpoints/profile/post-profile-onboarding-complete"},{"title":"Launch the onboarding task","openapi":"api-reference/openapi.json POST /profile/onboarding/launch","href":"/api-reference/endpoints/profile/post-profile-onboarding-launch"},{"title":"Set up the onboarding repository","openapi":"api-reference/openapi.json POST /profile/onboarding/repo","href":"/api-reference/endpoints/profile/post-profile-onboarding-repo"}]},{"group":"Organizations","pages":[{"title":"List my organizations","openapi":"api-reference/openapi.json GET /orgs","href":"/api-reference/endpoints/orgs/get-orgs"},{"title":"Create a team organization","openapi":"api-reference/openapi.json POST /orgs","href":"/api-reference/endpoints/orgs/post-orgs"},{"title":"Change organization settings","openapi":"api-reference/openapi.json PATCH /orgs/{orgID}","href":"/api-reference/endpoints/orgs/patch-orgs-by-orgid"},{"title":"Delete a team organization","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}","href":"/api-reference/endpoints/orgs/delete-orgs-by-orgid"},{"title":"Get an organization's teardown","openapi":"api-reference/openapi.json GET /orgs/{orgID}/teardown","href":"/api-reference/endpoints/orgs/get-orgs-by-orgid-teardown"},{"title":"List organization members","openapi":"api-reference/openapi.json GET /orgs/{orgID}/members","href":"/api-reference/endpoints/orgs/get-orgs-by-orgid-members"},{"title":"Change an organization member's role","openapi":"api-reference/openapi.json PATCH /orgs/{orgID}/members/{userID}","href":"/api-reference/endpoints/orgs/patch-orgs-by-orgid-members-by-userid"},{"title":"Remove an organization member","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/members/{userID}","href":"/api-reference/endpoints/orgs/delete-orgs-by-orgid-members-by-userid"},{"title":"Leave an organization","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/members/me","href":"/api-reference/endpoints/orgs/delete-orgs-by-orgid-members-me"},{"title":"Ask the organization's admins for a seat","openapi":"api-reference/openapi.json POST /orgs/{orgID}/seat-requests","href":"/api-reference/endpoints/orgs/post-orgs-by-orgid-seat-requests"},{"title":"List the organization's seat requests","openapi":"api-reference/openapi.json GET /orgs/{orgID}/seat-requests","href":"/api-reference/endpoints/orgs/get-orgs-by-orgid-seat-requests"},{"title":"List the organization's invitations","openapi":"api-reference/openapi.json GET /orgs/{orgID}/invites","href":"/api-reference/endpoints/orgs/get-orgs-by-orgid-invites"},{"title":"Invite a user to an organization","openapi":"api-reference/openapi.json POST /orgs/{orgID}/invites","href":"/api-reference/endpoints/orgs/post-orgs-by-orgid-invites"},{"title":"Revoke an organization invitation","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/invites/{inviteID}","href":"/api-reference/endpoints/orgs/delete-orgs-by-orgid-invites-by-inviteid"},{"title":"Resend an organization invitation","openapi":"api-reference/openapi.json POST /orgs/{orgID}/invites/{inviteID}/resend","href":"/api-reference/endpoints/orgs/post-orgs-by-orgid-invites-by-inviteid-resend"},{"title":"List my open organization invitations (pending or expired)","openapi":"api-reference/openapi.json GET /invites","href":"/api-reference/endpoints/orgs/get-invites"},{"title":"Accept an organization invitation","openapi":"api-reference/openapi.json POST /invites/{inviteID}/accept","href":"/api-reference/endpoints/orgs/post-invites-by-inviteid-accept"}]},{"group":"User Discovery","pages":[{"title":"Get dismissed discovery keys","openapi":"api-reference/openapi.json GET /user/discovery","href":"/api-reference/endpoints/user-discovery/get-user-discovery"},{"title":"Dismiss a discovery key","openapi":"api-reference/openapi.json PUT /user/discovery/dismissed-keys/{discoveryKey}","href":"/api-reference/endpoints/user-discovery/put-user-discovery-dismissed-keys-by-discoverykey"}]},{"group":"Pull Requests","pages":[{"title":"List the organization's pull requests","openapi":"api-reference/openapi.json GET /orgs/{orgID}/pull-requests","href":"/api-reference/endpoints/pull-requests/get-orgs-by-orgid-pull-requests"},{"title":"Count the organization's pull requests per section","openapi":"api-reference/openapi.json GET /orgs/{orgID}/pull-requests/sections","href":"/api-reference/endpoints/pull-requests/get-orgs-by-orgid-pull-requests-sections"},{"title":"Get one pull request","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid"},{"title":"Get one pull request's review","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/review","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-review"},{"title":"Get one file's content at a reviewed commit of a pull request","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/review/file","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-review-file"},{"title":"Get the snapshot of a pull request head: its changed files against the base tip, their patches and their contents at the head","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/review/head-snapshot","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-review-head-snapshot"},{"title":"Retry the capture of a pull request head's snapshot that gave up","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/review/head-snapshot/capture","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-review-head-snapshot-capture"},{"title":"Get the whole stack a reviewed pull request belongs to","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/review/stack","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-review-stack"},{"title":"Request an Aether review of a pull request","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/review/runs","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-review-runs"},{"title":"Dispatch pull request feedback to Aether","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/dispatch","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-dispatch"},{"title":"List Aether feedback dispatches for a pull request","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/github/dispatches","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-github-dispatches"},{"title":"Get a pull request's merge box and checks","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/github","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-github"},{"title":"Post a top-level comment on a pull request","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/comments","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-comments"},{"title":"Reply to a review comment on a pull request","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/comments/{githubCommentID}/replies","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-comments-by-githubcommentid-replies"},{"title":"Resolve the review thread containing a comment on a pull request","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/comments/{githubCommentID}/resolve","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-comments-by-githubcommentid-resolve"},{"title":"Unresolve the review thread containing a comment on a pull request","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/comments/{githubCommentID}/unresolve","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-comments-by-githubcommentid-unresolve"},{"title":"Get a pull request's changed files with unified-diff patches","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/github/diff","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-github-diff"},{"title":"Merge a pull request","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/merge","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-merge"},{"title":"Convert a pull request to a draft","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/draft","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-draft"},{"title":"Mark a draft pull request ready for review","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/ready","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-ready"},{"title":"Close a pull request","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/close","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-close"},{"title":"Reopen a closed pull request","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/reopen","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-reopen"},{"title":"Request a reviewer on a pull request","openapi":"api-reference/openapi.json PUT /pull-requests/{pullRequestID}/github/reviewers/{kind}/{name}","href":"/api-reference/endpoints/pull-requests/put-pull-requests-by-pullrequestid-github-reviewers-by-kind-by-name"},{"title":"Withdraw a reviewer's request on a pull request","openapi":"api-reference/openapi.json DELETE /pull-requests/{pullRequestID}/github/reviewers/{kind}/{name}","href":"/api-reference/endpoints/pull-requests/delete-pull-requests-by-pullrequestid-github-reviewers-by-kind-by-name"},{"title":"Submit a human pull request review","openapi":"api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/reviews","href":"/api-reference/endpoints/pull-requests/post-pull-requests-by-pullrequestid-github-reviews"},{"title":"List a pull request's review threads","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/github/threads","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-github-threads"},{"title":"List a pull request's activity","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/activity","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-activity"},{"title":"List a pull request's recorded verification events","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/verification-events","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-verification-events"},{"title":"Get everything recorded as proof of a pull request","openapi":"api-reference/openapi.json GET /pull-requests/{pullRequestID}/proof","href":"/api-reference/endpoints/pull-requests/get-pull-requests-by-pullrequestid-proof"},{"title":"Change who may watch a pull request's proof","openapi":"api-reference/openapi.json PATCH /pull-requests/{pullRequestID}/proof","href":"/api-reference/endpoints/pull-requests/patch-pull-requests-by-pullrequestid-proof"},{"title":"Resolve a pull request by repository and number","openapi":"api-reference/openapi.json GET /repos/{owner}/{repo}/pulls/{number}","href":"/api-reference/endpoints/pull-requests/get-repos-by-owner-by-repo-pulls-by-number"},{"title":"Resolve a pull request's proof by repository and number","openapi":"api-reference/openapi.json GET /repos/{owner}/{repo}/pulls/{number}/proof","href":"/api-reference/endpoints/pull-requests/get-repos-by-owner-by-repo-pulls-by-number-proof"},{"title":"Get a public pull request's proof","openapi":"api-reference/openapi.json GET /public/pull-requests/{pullRequestID}/proof","href":"/api-reference/endpoints/pull-requests/get-public-pull-requests-by-pullrequestid-proof"},{"title":"Resolve where a task's public proof is watched","openapi":"api-reference/openapi.json GET /public/tasks/{taskID}/proof","href":"/api-reference/endpoints/pull-requests/get-public-tasks-by-taskid-proof"},{"title":"Resolve a public pull request's proof by repository and number","openapi":"api-reference/openapi.json GET /public/repos/{owner}/{repo}/pulls/{number}/proof","href":"/api-reference/endpoints/pull-requests/get-public-repos-by-owner-by-repo-pulls-by-number-proof"}]},{"group":"Push Tokens","pages":[{"title":"Register an Expo push token for the current user","openapi":"api-reference/openapi.json POST /user/push-tokens","href":"/api-reference/endpoints/push-tokens/post-user-push-tokens"},{"title":"Unregister an Expo push token for the current user","openapi":"api-reference/openapi.json DELETE /user/push-tokens/{pushToken}","href":"/api-reference/endpoints/push-tokens/delete-user-push-tokens-by-pushtoken"}]},{"group":"Agent","pages":[{"title":"Get your agent","openapi":"api-reference/openapi.json GET /agent","href":"/api-reference/endpoints/agent/get-agent"},{"title":"List your agent's events","openapi":"api-reference/openapi.json GET /agent/events","href":"/api-reference/endpoints/agent/get-agent-events"},{"title":"List your conversation with your agent","openapi":"api-reference/openapi.json GET /agent/messages","href":"/api-reference/endpoints/agent/get-agent-messages"},{"title":"Send your agent a message","openapi":"api-reference/openapi.json POST /agent/messages","href":"/api-reference/endpoints/agent/post-agent-messages"},{"title":"Get your agent's memory","openapi":"api-reference/openapi.json GET /agent/memory","href":"/api-reference/endpoints/agent/get-agent-memory"},{"title":"Edit your agent's memory","openapi":"api-reference/openapi.json POST /agent/memory/edits","href":"/api-reference/endpoints/agent/post-agent-memory-edits"},{"title":"Get an edit of your agent's memory","openapi":"api-reference/openapi.json GET /agent/memory/edits/{editID}","href":"/api-reference/endpoints/agent/get-agent-memory-edits-by-editid"},{"title":"List your agent's tool calls this month","openapi":"api-reference/openapi.json GET /agent/tool-usage","href":"/api-reference/endpoints/agent/get-agent-tool-usage"},{"title":"Change your agent","openapi":"api-reference/openapi.json PATCH /agent","href":"/api-reference/endpoints/agent/patch-agent"},{"title":"Issue a single-use link","openapi":"api-reference/openapi.json POST /agent/links","href":"/api-reference/endpoints/agent/post-agent-links"},{"title":"Redeem a single-use link","openapi":"api-reference/openapi.json POST /agent/links/redeem","href":"/api-reference/endpoints/agent/post-agent-links-redeem"},{"title":"Paste a code on a single-use link","openapi":"api-reference/openapi.json POST /agent/links/paste","href":"/api-reference/endpoints/agent/post-agent-links-paste"},{"title":"Pick up the code pasted on a single-use link","openapi":"api-reference/openapi.json POST /agent/links/pickup","href":"/api-reference/endpoints/agent/post-agent-links-pickup"},{"title":"Get a connector","openapi":"api-reference/openapi.json GET /agent/connectors/{key}","href":"/api-reference/endpoints/agent/get-agent-connectors-by-key"},{"title":"Get your phone link","openapi":"api-reference/openapi.json GET /agent/phone","href":"/api-reference/endpoints/agent/get-agent-phone"},{"title":"Ask for a code to link your phone","openapi":"api-reference/openapi.json POST /agent/phone/verification","href":"/api-reference/endpoints/agent/post-agent-phone-verification"},{"title":"Delete your agent","openapi":"api-reference/openapi.json DELETE /agent","href":"/api-reference/endpoints/agent/delete-agent"}]},{"group":"Connections","pages":[{"title":"List your connections","openapi":"api-reference/openapi.json GET /connections","href":"/api-reference/endpoints/connections/get-connections"},{"title":"Add a connection: Claude plan","openapi":"api-reference/openapi.json POST /connections/claude-plan","href":"/api-reference/endpoints/connections/post-connections-claude-plan"},{"title":"Add a connection: Anthropic API key","openapi":"api-reference/openapi.json POST /connections/anthropic-api-key","href":"/api-reference/endpoints/connections/post-connections-anthropic-api-key"},{"title":"Add a connection: OpenAI API key","openapi":"api-reference/openapi.json POST /connections/openai-api-key","href":"/api-reference/endpoints/connections/post-connections-openai-api-key"},{"title":"Add a connection: OpenRouter API key","openapi":"api-reference/openapi.json POST /connections/openrouter-api-key","href":"/api-reference/endpoints/connections/post-connections-openrouter-api-key"},{"title":"Add a connection: OpenCode auth file","openapi":"api-reference/openapi.json POST /connections/opencode-auth-file","href":"/api-reference/endpoints/connections/post-connections-opencode-auth-file"},{"title":"Start a ChatGPT plan device sign-in","openapi":"api-reference/openapi.json POST /connections/chatgpt-plan/device-auths","href":"/api-reference/endpoints/connections/post-connections-chatgpt-plan-device-auths"},{"title":"Read a ChatGPT plan device sign-in","openapi":"api-reference/openapi.json GET /connections/chatgpt-plan/device-auths/{deviceAuthID}","href":"/api-reference/endpoints/connections/get-connections-chatgpt-plan-device-auths-by-deviceauthid"},{"title":"Reconnect a connection","openapi":"api-reference/openapi.json POST /connections/{connectionID}/reconnect","href":"/api-reference/endpoints/connections/post-connections-by-connectionid-reconnect"},{"title":"Rename a connection","openapi":"api-reference/openapi.json PATCH /connections/{connectionID}","href":"/api-reference/endpoints/connections/patch-connections-by-connectionid"},{"title":"Disconnect a connection","openapi":"api-reference/openapi.json DELETE /connections/{connectionID}","href":"/api-reference/endpoints/connections/delete-connections-by-connectionid"},{"title":"List your connection defaults","openapi":"api-reference/openapi.json GET /connections/defaults","href":"/api-reference/endpoints/connections/get-connections-defaults"},{"title":"Set a harness's default connection","openapi":"api-reference/openapi.json PUT /connections/defaults/{harness}","href":"/api-reference/endpoints/connections/put-connections-defaults-by-harness"}]},{"group":"Slack","pages":[{"title":"Get Slack install URL","openapi":"api-reference/openapi.json GET /orgs/{orgID}/auth/slack/url","href":"/api-reference/endpoints/slack/get-orgs-by-orgid-auth-slack-url"},{"title":"List Slack channels","openapi":"api-reference/openapi.json GET /orgs/{orgID}/slack/channels","href":"/api-reference/endpoints/slack/get-orgs-by-orgid-slack-channels"},{"title":"Disconnect Slack","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/slack/connection","href":"/api-reference/endpoints/slack/delete-orgs-by-orgid-slack-connection"},{"title":"Update Slack connection","openapi":"api-reference/openapi.json PATCH /orgs/{orgID}/slack/connection","href":"/api-reference/endpoints/slack/patch-orgs-by-orgid-slack-connection"},{"title":"Link my Slack identity","openapi":"api-reference/openapi.json POST /slack/identity/link","href":"/api-reference/endpoints/slack/post-slack-identity-link"},{"title":"Unlink my Slack identity","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/slack/identity/link","href":"/api-reference/endpoints/slack/delete-orgs-by-orgid-slack-identity-link"},{"title":"List Slack routes","openapi":"api-reference/openapi.json GET /orgs/{orgID}/slack/routes","href":"/api-reference/endpoints/slack/get-orgs-by-orgid-slack-routes"},{"title":"Create Slack route","openapi":"api-reference/openapi.json POST /orgs/{orgID}/slack/routes","href":"/api-reference/endpoints/slack/post-orgs-by-orgid-slack-routes"},{"title":"Update Slack route","openapi":"api-reference/openapi.json PATCH /orgs/{orgID}/slack/routes/{routeID}","href":"/api-reference/endpoints/slack/patch-orgs-by-orgid-slack-routes-by-routeid"},{"title":"Delete Slack route","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/slack/routes/{routeID}","href":"/api-reference/endpoints/slack/delete-orgs-by-orgid-slack-routes-by-routeid"},{"title":"Get Slack status","openapi":"api-reference/openapi.json GET /orgs/{orgID}/slack/status","href":"/api-reference/endpoints/slack/get-orgs-by-orgid-slack-status"}]},{"group":"Sentry","pages":[{"title":"Get Sentry install URL","openapi":"api-reference/openapi.json GET /orgs/{orgID}/auth/sentry/url","href":"/api-reference/endpoints/sentry/get-orgs-by-orgid-auth-sentry-url"},{"title":"Disconnect Sentry","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/sentry/connection","href":"/api-reference/endpoints/sentry/delete-orgs-by-orgid-sentry-connection"},{"title":"Update Sentry connection","openapi":"api-reference/openapi.json PATCH /orgs/{orgID}/sentry/connection","href":"/api-reference/endpoints/sentry/patch-orgs-by-orgid-sentry-connection"},{"title":"List Sentry routes","openapi":"api-reference/openapi.json GET /orgs/{orgID}/sentry/routes","href":"/api-reference/endpoints/sentry/get-orgs-by-orgid-sentry-routes"},{"title":"Create Sentry route","openapi":"api-reference/openapi.json POST /orgs/{orgID}/sentry/routes","href":"/api-reference/endpoints/sentry/post-orgs-by-orgid-sentry-routes"},{"title":"Update Sentry route","openapi":"api-reference/openapi.json PATCH /orgs/{orgID}/sentry/routes/{routeID}","href":"/api-reference/endpoints/sentry/patch-orgs-by-orgid-sentry-routes-by-routeid"},{"title":"Delete Sentry route","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/sentry/routes/{routeID}","href":"/api-reference/endpoints/sentry/delete-orgs-by-orgid-sentry-routes-by-routeid"},{"title":"List Sentry projects","openapi":"api-reference/openapi.json GET /orgs/{orgID}/sentry/projects","href":"/api-reference/endpoints/sentry/get-orgs-by-orgid-sentry-projects"},{"title":"Get Sentry status","openapi":"api-reference/openapi.json GET /orgs/{orgID}/sentry/status","href":"/api-reference/endpoints/sentry/get-orgs-by-orgid-sentry-status"}]},{"group":"Feedback","pages":[{"title":"Submit feedback","openapi":"api-reference/openapi.json POST /feedback","href":"/api-reference/endpoints/feedback/post-feedback"}]},{"group":"Notifications","pages":[{"title":"Get notification preferences","openapi":"api-reference/openapi.json GET /user/notification-preferences","href":"/api-reference/endpoints/notifications/get-user-notification-preferences"},{"title":"Update notification preferences","openapi":"api-reference/openapi.json PATCH /user/notification-preferences","href":"/api-reference/endpoints/notifications/patch-user-notification-preferences"},{"title":"List notifications","openapi":"api-reference/openapi.json GET /user/notifications","href":"/api-reference/endpoints/notifications/get-user-notifications"},{"title":"Count tasks waiting on you","openapi":"api-reference/openapi.json GET /user/waiting-task-count","href":"/api-reference/endpoints/notifications/get-user-waiting-task-count"},{"title":"Resolve task notifications","openapi":"api-reference/openapi.json POST /user/notifications/tasks/{taskID}/resolve","href":"/api-reference/endpoints/notifications/post-user-notifications-tasks-by-taskid-resolve"},{"title":"Dismiss notification","openapi":"api-reference/openapi.json POST /user/notifications/{notificationID}/dismiss","href":"/api-reference/endpoints/notifications/post-user-notifications-by-notificationid-dismiss"}]},{"group":"GitHub","pages":[{"title":"Get GitHub install URL","openapi":"api-reference/openapi.json GET /auth/github/url","href":"/api-reference/endpoints/github/get-auth-github-url"},{"title":"Get GitHub authorize URL","openapi":"api-reference/openapi.json GET /auth/github/authorize-url","href":"/api-reference/endpoints/github/get-auth-github-authorize-url"},{"title":"Claim GitHub installations from an OAuth code","openapi":"api-reference/openapi.json POST /github/installations/claim","href":"/api-reference/endpoints/github/post-github-installations-claim"},{"title":"Disconnect GitHub","openapi":"api-reference/openapi.json DELETE /github/connection","href":"/api-reference/endpoints/github/delete-github-connection"},{"title":"List GitHub repos","openapi":"api-reference/openapi.json GET /github/repos","href":"/api-reference/endpoints/github/get-github-repos"},{"title":"Get a GitHub repo","openapi":"api-reference/openapi.json GET /github/repos/{owner}/{repo}","href":"/api-reference/endpoints/github/get-github-repos-by-owner-by-repo"},{"title":"Get GitHub status","openapi":"api-reference/openapi.json GET /github/status","href":"/api-reference/endpoints/github/get-github-status"},{"title":"List GitHub repo branch suggestions","openapi":"api-reference/openapi.json GET /projects/{projectID}/github/branch-suggestions","href":"/api-reference/endpoints/github/get-projects-by-projectid-github-branch-suggestions"},{"title":"Import GitHub repo","openapi":"api-reference/openapi.json POST /projects/{projectID}/github/import","href":"/api-reference/endpoints/github/post-projects-by-projectid-github-import"},{"title":"Get GitHub project link","openapi":"api-reference/openapi.json GET /projects/{projectID}/github/link","href":"/api-reference/endpoints/github/get-projects-by-projectid-github-link"},{"title":"Fetch GitHub repo tree","openapi":"api-reference/openapi.json GET /projects/{projectID}/github/tree","href":"/api-reference/endpoints/github/get-projects-by-projectid-github-tree"}]},{"group":"Platform API Keys","pages":[{"title":"List platform API keys","openapi":"api-reference/openapi.json GET /user/platform-keys","href":"/api-reference/endpoints/platform-keys/get-user-platform-keys"},{"title":"Create platform API key","openapi":"api-reference/openapi.json POST /orgs/{orgID}/platform-keys","href":"/api-reference/endpoints/platform-keys/post-orgs-by-orgid-platform-keys"},{"title":"Revoke platform API key","openapi":"api-reference/openapi.json DELETE /user/platform-keys/{platformKeyID}","href":"/api-reference/endpoints/platform-keys/delete-user-platform-keys-by-platformkeyid"}]},{"group":"User Settings","pages":[{"title":"Get user settings","openapi":"api-reference/openapi.json GET /user/settings","href":"/api-reference/endpoints/user-settings/get-user-settings"},{"title":"Update user settings","openapi":"api-reference/openapi.json PATCH /user/settings","href":"/api-reference/endpoints/user-settings/patch-user-settings"}]},{"group":"Billing","pages":[{"title":"Get billing catalog","openapi":"api-reference/openapi.json GET /orgs/{orgID}/billing/catalog","href":"/api-reference/endpoints/billing/get-orgs-by-orgid-billing-catalog"},{"title":"Get inference balance","openapi":"api-reference/openapi.json GET /orgs/{orgID}/billing/inference-balance","href":"/api-reference/endpoints/billing/get-orgs-by-orgid-billing-inference-balance"},{"title":"Create billing checkout session","openapi":"api-reference/openapi.json POST /orgs/{orgID}/billing/checkout-sessions","href":"/api-reference/endpoints/billing/post-orgs-by-orgid-billing-checkout-sessions"},{"title":"Bind a store transaction to a purchase intent","openapi":"api-reference/openapi.json POST /orgs/{orgID}/billing/checkout-sessions/{checkoutSessionID}/transaction","href":"/api-reference/endpoints/billing/post-orgs-by-orgid-billing-checkout-sessions-by-checkoutsessionid-transaction"},{"title":"Get billing checkout session","openapi":"api-reference/openapi.json GET /orgs/{orgID}/billing/checkout-sessions/{lookup}","href":"/api-reference/endpoints/billing/get-orgs-by-orgid-billing-checkout-sessions-by-lookup"},{"title":"List billing credit packs","openapi":"api-reference/openapi.json GET /orgs/{orgID}/billing/credit-packs","href":"/api-reference/endpoints/billing/get-orgs-by-orgid-billing-credit-packs"},{"title":"Create billing portal session","openapi":"api-reference/openapi.json POST /orgs/{orgID}/billing/portal-sessions","href":"/api-reference/endpoints/billing/post-orgs-by-orgid-billing-portal-sessions"},{"title":"List the caller's unassigned store purchases","openapi":"api-reference/openapi.json GET /billing/store/unassigned-purchases","href":"/api-reference/endpoints/billing/get-billing-store-unassigned-purchases"},{"title":"Claim an unassigned store purchase into an org","openapi":"api-reference/openapi.json POST /billing/store/unassigned-purchases/{transactionID}/claim","href":"/api-reference/endpoints/billing/post-billing-store-unassigned-purchases-by-transactionid-claim"},{"title":"List billing warm slots","openapi":"api-reference/openapi.json GET /orgs/{orgID}/billing/slots","href":"/api-reference/endpoints/billing/get-orgs-by-orgid-billing-slots"},{"title":"Assign a project to a billing warm slot","openapi":"api-reference/openapi.json PUT /orgs/{orgID}/billing/slots/{slotIndex}","href":"/api-reference/endpoints/billing/put-orgs-by-orgid-billing-slots-by-slotindex"},{"title":"Release a billing warm slot","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/billing/slots/{slotIndex}","href":"/api-reference/endpoints/billing/delete-orgs-by-orgid-billing-slots-by-slotindex"},{"title":"Get billing subscription","openapi":"api-reference/openapi.json GET /orgs/{orgID}/billing/subscription","href":"/api-reference/endpoints/billing/get-orgs-by-orgid-billing-subscription"}]},{"group":"Linear","pages":[{"title":"Get Linear install URL","openapi":"api-reference/openapi.json GET /orgs/{orgID}/auth/linear/url","href":"/api-reference/endpoints/linear/get-orgs-by-orgid-auth-linear-url"},{"title":"Disconnect Linear","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/linear/connection","href":"/api-reference/endpoints/linear/delete-orgs-by-orgid-linear-connection"},{"title":"Update Linear connection","openapi":"api-reference/openapi.json PATCH /orgs/{orgID}/linear/connection","href":"/api-reference/endpoints/linear/patch-orgs-by-orgid-linear-connection"},{"title":"List Linear projects","openapi":"api-reference/openapi.json GET /orgs/{orgID}/linear/projects","href":"/api-reference/endpoints/linear/get-orgs-by-orgid-linear-projects"},{"title":"List Linear routes","openapi":"api-reference/openapi.json GET /orgs/{orgID}/linear/routes","href":"/api-reference/endpoints/linear/get-orgs-by-orgid-linear-routes"},{"title":"Create Linear route","openapi":"api-reference/openapi.json POST /orgs/{orgID}/linear/routes","href":"/api-reference/endpoints/linear/post-orgs-by-orgid-linear-routes"},{"title":"Update Linear route","openapi":"api-reference/openapi.json PATCH /orgs/{orgID}/linear/routes/{routeID}","href":"/api-reference/endpoints/linear/patch-orgs-by-orgid-linear-routes-by-routeid"},{"title":"Delete Linear route","openapi":"api-reference/openapi.json DELETE /orgs/{orgID}/linear/routes/{routeID}","href":"/api-reference/endpoints/linear/delete-orgs-by-orgid-linear-routes-by-routeid"},{"title":"Get Linear status","openapi":"api-reference/openapi.json GET /orgs/{orgID}/linear/status","href":"/api-reference/endpoints/linear/get-orgs-by-orgid-linear-status"},{"title":"List Linear teams","openapi":"api-reference/openapi.json GET /orgs/{orgID}/linear/teams","href":"/api-reference/endpoints/linear/get-orgs-by-orgid-linear-teams"}]},{"group":"WebSocket","pages":[{"title":"WebSocket Overview","href":"/api-reference/websocket/overview"},{"title":"Terminal Channel","href":"/api-reference/websocket/terminal"},{"title":"Files Channel","href":"/api-reference/websocket/files"},{"title":"Agent Channel","href":"/api-reference/websocket/agent"},{"title":"Ports Channel","href":"/api-reference/websocket/ports"},{"title":"Git Channel","href":"/api-reference/websocket/git"}]}]},{"tab":"CLI Reference","pages":[{"title":"CLI Reference","href":"/cli/overview"}]}]},"title":"Update agent profile - Aether","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}