Older shape of parameters: each entry becomes a required string parameter. Mutually exclusive with parameters in one request. Reads return both, arguments being the string parameters of the schema.
Call parameters as a JSON Schema object (draft 2020-12): type: object (filled in when omitted), properties, required. Standard meaning throughout: required means the key must be present, type: ["string", "null"] allows null, minLength: 1 makes a string non-empty, enum and pattern constrain the value, default fills a key the model left out. Mutually exclusive with arguments in one request. A tool created with parameters starts in parameter_mode: strict.
Whether the agent runtime checks each call's arguments against parameters before running the tool. legacy (the default for tools created with arguments, and every tool from before this field existed): no check, the model's arguments run as sent. strict (the default for tools created with parameters): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with strict: true, Gemini on the platform's native channel runs validated function calling). Changing parameters never changes the mode, and the mode can be changed on its own.
Request body sent for non-GET calls. {{argument}}, {{system.*}} and custom session variable placeholders are filled in at call time; a missing value becomes empty. When the body's content type is JSON (the default application/json, any +json type, or a Content-Type header saying so), a placeholder inside a JSON string, such as {"note": "{{note}}"}, is JSON-escaped, so quotes, backslashes and newlines in the value keep the body valid JSON. A placeholder outside a string, such as {"count": {{count}}}, is inserted as is. Other content types are filled in as is.
Call parameters as a JSON Schema object (draft 2020-12): type: object (filled in when omitted), properties, required. Standard meaning throughout: required means the key must be present, type: ["string", "null"] allows null, minLength: 1 makes a string non-empty, enum and pattern constrain the value, default fills a key the model left out. Mutually exclusive with arguments in one request. A tool created with parameters starts in parameter_mode: strict.
Older shape of parameters: each entry becomes a required string parameter. Mutually exclusive with parameters in one request. Reads return both, arguments being the string parameters of the schema.
Whether the agent runtime checks each call's arguments against parameters before running the tool. legacy (the default for tools created with arguments, and every tool from before this field existed): no check, the model's arguments run as sent. strict (the default for tools created with parameters): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with strict: true, Gemini on the platform's native channel runs validated function calling). Changing parameters never changes the mode, and the mode can be changed on its own.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fish Audio","description":"Documentation for Fish Audio APIs, SDKs, models, voice cloning, real-time streaming, and self-hosting.","colors":{"primary":"#0e0e0e","light":"#9b90e8","dark":"#09090b"},"logo":{"light":"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/light.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=305973cd6a8d11dbf36d1ec682ee845e","dark":"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/dark.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=b79bd889db9ac1aae939834596e8a22f"},"favicon":"https://mintcdn.com/hanabiaiinc/-WxHANLOAmlTUwdM/favicon.svg?fit=max\u0026auto=format\u0026n=-WxHANLOAmlTUwdM\u0026q=85\u0026s=dc65d9f44bda0f5b8277c48dd9c979c3","navbar":{"links":[{"href":"https://discord.gg/dF9Db2Tt3Y","label":"Community"},{"href":"mailto:support@fish.audio","label":"Support"}],"primary":{"type":"button","label":"Sign Up","href":"https://fish.audio/auth/?redirect=/app/"}},"footer":{"socials":{"website":"https://fish.audio","github":"https://github.com/fishaudio","x":"https://x.com/fishaudio","linkedin":"https://www.linkedin.com/company/fish-audio","discord":"https://discord.gg/dF9Db2Tt3Y"},"links":[{"header":"About","items":[{"label":"Research","href":"https://openaudio.com/"},{"label":"Careers","href":"mailto:hr@fish.audio"},{"label":"Blog","href":"https://fish.audio/blog"}]},{"header":"Resources","items":[{"label":"API Status","href":"https://status.fish.audio"},{"label":"Open Source","href":"https://github.com/fishaudio"},{"label":"Changelog","href":"https://docs.fish.audio/developer-guide/getting-started/changelog"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://fish.audio/privacy"},{"label":"Terms of Service","href":"https://fish.audio/terms"},{"label":"Report Abuse","href":"mailto:support@fish.audio?subject=%5BReport+Abuse%5D+MODEL+NAME\u0026amp;body=Please+provide+a+detailed+description+of+the+abuse+you+are+reporting."}]}]},"fonts":{"family":"Onest"},"integrations":{"amplitude":{"apiKey":"39daf30712f00da6ea5283bc21e7084e"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hanabiaiinc","hasAudioNarration":false,"actualSubdomain":"hanabiaiinc","customDomains":["docs.fish.audio"],"gitSource":{"type":"github","owner":"fishaudio","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf939a97dcd8815dac5716","collectionId":"c3bd58b2-e275-4a0e-aa2a-84eb41462f11","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf939a97dcd8815dac5716"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6adf939a97dcd8815dac5716","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API Reference","count":78},{"language":"default","tag":"Agents API","count":49},{"language":"default","tag":"Agents","count":46},{"language":"default","tag":"Resources","count":40},{"language":"default","tag":"Overview","count":30},{"language":"default","tag":"REST API","count":14},{"language":"default","tag":"Core Features","count":14},{"language":"default","tag":"Tests","count":13},{"language":"default","tag":"Cookbook","count":12},{"language":"default","tag":"Build","count":10}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@fish.audio","showHelpButton":true}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"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":"editor-v7-file-tree","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":"editor-nav-generations","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":"editor-agent-model-picker","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}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"custom.css","content":"*{scrollbar-width:thin;scrollbar-color:rgba(120,120,120,.4) transparent}::-webkit-scrollbar{width:6px;height:6px;background:0 0!important}::-webkit-scrollbar-thumb{background:rgba(120,120,120,.5);border-radius:999px;opacity:0;transition:opacity .2s ease}:active::-webkit-scrollbar-thumb,:hover::-webkit-scrollbar-thumb{opacity:1}img[src*=\"/images/\"]{background:0 0!important}.prompt-card{display:grid;cursor:pointer;outline:0}.prompt-card .card{transition:border-color .15s ease}.prompt-card:focus-visible .card,.prompt-card:hover .card{border-color:rgb(var(--primary))!important}.dark .prompt-card:focus-visible .card,.dark .prompt-card:hover .card{border-color:rgb(var(--primary-light))!important}.prompt-card-hint{position:absolute;top:1rem;right:1rem;padding:.3rem .6rem;border-radius:9999px;font-size:.75rem;line-height:1;color:rgb(var(--gray-500));background:rgba(120,120,120,.12);opacity:0;transition:opacity .15s ease;pointer-events:none}.prompt-card:focus-visible .prompt-card-hint,.prompt-card:hover .prompt-card-hint,.prompt-card[data-state=copied] .prompt-card-hint,.prompt-card[data-state=failed] .prompt-card-hint{opacity:1}.prompt-card[data-state=copied] .prompt-card-hint{color:rgb(var(--primary));background:rgb(var(--primary)/.12)}.dark .prompt-card[data-state=copied] .prompt-card-hint{color:rgb(var(--primary-light));background:rgb(var(--primary-light)/.16)}"}],"page":{"pagePath":"api-reference/endpoint/agent/update-tool","slug":"/api-reference/endpoint/agent/update-tool","pageMetadata":{"openapi":"patch /v1/agent/tools/{tool_id}","title":"Update Tool","description":"Patch tool fields; omitted fields keep their value (null is rejected —\nsend an empty string to clear a text field).","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/update-tool"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Patch tool fields; omitted fields keep their value (null is rejected —\\nsend an empty string to clear a text field).\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=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":{"config":{},"pageMetadata":{"openapi":"patch /v1/agent/tools/{tool_id}","title":"Update Tool","description":"Patch tool fields; omitted fields keep their value (null is rejected —\nsend an empty string to clear a text field).","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/update-tool"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Update Tool","description":"Patch tool fields; omitted fields keep their value (null is rejected —\nsend an empty string to clear a text field).","security":["37e8ff61-da14-4095-8c59-1f588bf84397"],"parameters":["6ee50e57-5a5f-4671-a1d6-0d4e9b0b4832"],"requestBody":"6a964a64-f4ad-405a-93a1-7b4564ce79b6","responses":{"200":"6feb1580-b08d-4321-969e-e789b091786b","400":"d4714b2b-ef72-46cf-ba65-183f88e79b4d","401":"29be8f9f-3f90-43e1-bfa1-7dc0b29b366d","404":"96f7441a-b712-49f8-8f83-fe9dcbee800b","422":"fc97209e-75d3-496f-aae0-c3a3daa2fde9","503":"a0e157c8-e367-45f3-808a-98ef42b59735"},"tags":["Agent Tools"],"method":"patch","type":"path","servers":["39cecf54-e58d-4ac2-ab28-6d00babdd859"],"path":"/v1/agent/tools/{tool_id}","baseUrlOptions":["https://api.fish.audio"],"title":"Update Tool","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6ee50e57-5a5f-4671-a1d6-0d4e9b0b4832":{"in":"path","name":"tool_id","description":"","required":true,"schema":{"title":"Tool Id","type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"},"deprecated":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"oneOf":[{"type":"string","title":"Name","maxLength":120,"minLength":1,"uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"name.oneOf.1","typeLabel":"null"}],"uniqueKey":"name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","maxLength":2000,"uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"arguments":{"oneOf":[{"type":"array","items":{"properties":{"name":{"maxLength":64,"minLength":1,"title":"Name","type":"string","isRequired":true,"uniqueKey":"arguments.oneOf.0.items.[INDEX].name","typeLabel":"string"},"description":{"default":"","maxLength":500,"title":"Description","type":"string","uniqueKey":"arguments.oneOf.0.items.[INDEX].description","typeLabel":"string"}},"required":["name"],"title":"AgentWebhookArgumentPayload","type":"object","uniqueKey":"arguments.oneOf.0.items.[INDEX]","typeLabel":"AgentWebhookArgumentPayload · object"},"title":"Arguments","description":"Older shape of `parameters`: each entry becomes a required string parameter. Mutually exclusive with `parameters` in one request. Reads return both, `arguments` being the string parameters of the schema.","uniqueKey":"arguments.oneOf.0","typeLabel":"AgentWebhookArgumentPayload · object[]"},{"type":"null","title":"Arguments","description":"Older shape of `parameters`: each entry becomes a required string parameter. Mutually exclusive with `parameters` in one request. Reads return both, `arguments` being the string parameters of the schema.","uniqueKey":"arguments.oneOf.1","typeLabel":"null"}],"uniqueKey":"arguments","typeLabel":"AgentWebhookArgumentPayload · object[] | null"},"parameters":{"oneOf":[{"type":"object","title":"Parameters","description":"Call parameters as a JSON Schema object (draft 2020-12): `type: object` (filled in when omitted), `properties`, `required`. Standard meaning throughout: `required` means the key must be present, `type: [\"string\", \"null\"]` allows null, `minLength: 1` makes a string non-empty, `enum` and `pattern` constrain the value, `default` fills a key the model left out. Mutually exclusive with `arguments` in one request. A tool created with `parameters` starts in `parameter_mode: strict`.","additionalProperties":{"oneOf":[{}],"uniqueKey":"parameters.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"parameters.oneOf.0","typeLabel":"Parameters · object"},{"type":"null","title":"Parameters","description":"Call parameters as a JSON Schema object (draft 2020-12): `type: object` (filled in when omitted), `properties`, `required`. Standard meaning throughout: `required` means the key must be present, `type: [\"string\", \"null\"]` allows null, `minLength: 1` makes a string non-empty, `enum` and `pattern` constrain the value, `default` fills a key the model left out. Mutually exclusive with `arguments` in one request. A tool created with `parameters` starts in `parameter_mode: strict`.","uniqueKey":"parameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"parameters","typeLabel":"Parameters · object | null"},"parameter_mode":{"oneOf":[{"type":"string","title":"Parameter Mode","description":"Whether the agent runtime checks each call's arguments against `parameters` before running the tool. `legacy` (the default for tools created with `arguments`, and every tool from before this field existed): no check, the model's arguments run as sent. `strict` (the default for tools created with `parameters`): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with `strict: true`, Gemini on the platform's native channel runs validated function calling). Changing `parameters` never changes the mode, and the mode can be changed on its own.","enum":["legacy","strict"],"uniqueKey":"parameter_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Parameter Mode","description":"Whether the agent runtime checks each call's arguments against `parameters` before running the tool. `legacy` (the default for tools created with `arguments`, and every tool from before this field existed): no check, the model's arguments run as sent. `strict` (the default for tools created with `parameters`): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with `strict: true`, Gemini on the platform's native channel runs validated function calling). Changing `parameters` never changes the mode, and the mode can be changed on its own.","uniqueKey":"parameter_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"parameter_mode","typeLabel":"enum\u003cstring> | null"},"method":{"oneOf":[{"type":"string","title":"Method","enum":["GET","POST","PUT","PATCH","DELETE"],"uniqueKey":"method.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Method","uniqueKey":"method.oneOf.1","typeLabel":"null"}],"uniqueKey":"method","typeLabel":"enum\u003cstring> | null"},"url":{"oneOf":[{"type":"string","title":"Url","maxLength":4000,"minLength":1,"uniqueKey":"url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","uniqueKey":"url.oneOf.1","typeLabel":"null"}],"uniqueKey":"url","typeLabel":"string | null"},"content_type":{"oneOf":[{"type":"string","title":"Content Type","maxLength":128,"uniqueKey":"content_type.oneOf.0","typeLabel":"string"},{"type":"null","title":"Content Type","uniqueKey":"content_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"content_type","typeLabel":"string | null"},"body_template":{"oneOf":[{"type":"string","title":"Body Template","description":"Request body sent for non-GET calls. `{{argument}}`, `{{system.*}}` and custom session variable placeholders are filled in at call time; a missing value becomes empty. When the body's content type is JSON (the default `application/json`, any `+json` type, or a `Content-Type` header saying so), a placeholder inside a JSON string, such as `{\"note\": \"{{note}}\"}`, is JSON-escaped, so quotes, backslashes and newlines in the value keep the body valid JSON. A placeholder outside a string, such as `{\"count\": {{count}}}`, is inserted as is. Other content types are filled in as is.","maxLength":100000,"uniqueKey":"body_template.oneOf.0","typeLabel":"string"},{"type":"null","title":"Body Template","description":"Request body sent for non-GET calls. `{{argument}}`, `{{system.*}}` and custom session variable placeholders are filled in at call time; a missing value becomes empty. When the body's content type is JSON (the default `application/json`, any `+json` type, or a `Content-Type` header saying so), a placeholder inside a JSON string, such as `{\"note\": \"{{note}}\"}`, is JSON-escaped, so quotes, backslashes and newlines in the value keep the body valid JSON. A placeholder outside a string, such as `{\"count\": {{count}}}`, is inserted as is. Other content types are filled in as is.","uniqueKey":"body_template.oneOf.1","typeLabel":"null"}],"uniqueKey":"body_template","typeLabel":"string | null"},"headers":{"oneOf":[{"type":"array","items":{"properties":{"name":{"maxLength":128,"minLength":1,"title":"Name","type":"string","isRequired":true,"uniqueKey":"headers.oneOf.0.items.[INDEX].name","typeLabel":"string"},"value":{"maxLength":4000,"title":"Value","type":"string","isRequired":true,"uniqueKey":"headers.oneOf.0.items.[INDEX].value","typeLabel":"string"},"kind":{"default":"custom","enum":["custom","authorization_bearer","authorization_basic"],"title":"Kind","type":"string","uniqueKey":"headers.oneOf.0.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"required":["name","value"],"title":"AgentWebhookHeaderPayload","type":"object","uniqueKey":"headers.oneOf.0.items.[INDEX]","typeLabel":"AgentWebhookHeaderPayload · object"},"title":"Headers","uniqueKey":"headers.oneOf.0","typeLabel":"AgentWebhookHeaderPayload · object[]"},{"type":"null","title":"Headers","uniqueKey":"headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"headers","typeLabel":"AgentWebhookHeaderPayload · object[] | null"},"timeout_seconds":{"oneOf":[{"type":"integer","title":"Timeout Seconds","maximum":300,"minimum":1,"uniqueKey":"timeout_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Timeout Seconds","uniqueKey":"timeout_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"timeout_seconds","typeLabel":"integer | null"},"error_handling":{"oneOf":[{"type":"string","title":"Error Handling","enum":["passthrough","hide"],"uniqueKey":"error_handling.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Error Handling","uniqueKey":"error_handling.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_handling","typeLabel":"enum\u003cstring> | null"},"mock_responses":{"oneOf":[{"type":"array","items":{"properties":{"name":{"default":"","maxLength":120,"title":"Name","type":"string","uniqueKey":"mock_responses.oneOf.0.items.[INDEX].name","typeLabel":"string"},"status_code":{"default":200,"maximum":599,"minimum":100,"title":"Status Code","type":"integer","uniqueKey":"mock_responses.oneOf.0.items.[INDEX].status_code","typeLabel":"integer"},"content_type":{"default":"application/json","maxLength":128,"title":"Content Type","type":"string","uniqueKey":"mock_responses.oneOf.0.items.[INDEX].content_type","typeLabel":"string"},"body":{"default":"","maxLength":100000,"title":"Body","type":"string","uniqueKey":"mock_responses.oneOf.0.items.[INDEX].body","typeLabel":"string"}},"title":"AgentWebhookMockResponsePayload","type":"object","uniqueKey":"mock_responses.oneOf.0.items.[INDEX]","typeLabel":"AgentWebhookMockResponsePayload · object"},"title":"Mock Responses","uniqueKey":"mock_responses.oneOf.0","typeLabel":"AgentWebhookMockResponsePayload · object[]"},{"type":"null","title":"Mock Responses","uniqueKey":"mock_responses.oneOf.1","typeLabel":"null"}],"uniqueKey":"mock_responses","typeLabel":"AgentWebhookMockResponsePayload · object[] | null"},"expects_response":{"oneOf":[{"type":"boolean","title":"Expects Response","uniqueKey":"expects_response.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Expects Response","uniqueKey":"expects_response.oneOf.1","typeLabel":"null"}],"uniqueKey":"expects_response","typeLabel":"boolean | null"},"execution_mode":{"oneOf":[{"type":"string","title":"Execution Mode","enum":["blocking","fire_and_forget","background"],"uniqueKey":"execution_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Execution Mode","uniqueKey":"execution_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"execution_mode","typeLabel":"enum\u003cstring> | null"}},"title":"PublicAgentToolUpdatePayload","type":"object","uniqueKey":"","typeLabel":"PublicAgentToolUpdatePayload · object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","description":"\u003cstring>","arguments":[{"name":"\u003cstring>","description":""}],"parameters":{},"url":"\u003cstring>","content_type":"\u003cstring>","body_template":"\u003cstring>","headers":[{"name":"\u003cstring>","value":"\u003cstring>","kind":"custom"}],"timeout_seconds":150,"mock_responses":[{"name":"","status_code":200,"content_type":"application/json","body":""}],"expects_response":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"6feb1580-b08d-4321-969e-e789b091786b":{"description":"Request fulfilled, document follows","headers":{},"content":{"application/json":{"schema":{"properties":{"tool_id":{"title":"Tool Id","type":"string","isRequired":true,"uniqueKey":"tool_id","typeLabel":"string"},"workspace_id":{"title":"Workspace Id","type":"string","isRequired":true,"uniqueKey":"workspace_id","typeLabel":"string"},"name":{"title":"Name","type":"string","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"tool_type":{"enum":["webhook","client"],"title":"Tool Type","type":"string","isRequired":true,"uniqueKey":"tool_type","typeLabel":"enum\u003cstring>"},"method":{"enum":["GET","POST","PUT","PATCH","DELETE"],"title":"Method","type":"string","isRequired":true,"uniqueKey":"method","typeLabel":"enum\u003cstring>"},"url":{"title":"Url","type":"string","isRequired":true,"uniqueKey":"url","typeLabel":"string"},"created_at":{"format":"date-time","title":"Created At","type":"string","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"format":"date-time","title":"Updated At","type":"string","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"parameters":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"parameters.additionalProperties","typeLabel":"any"},"description":"Call parameters as a JSON Schema object (draft 2020-12): `type: object` (filled in when omitted), `properties`, `required`. Standard meaning throughout: `required` means the key must be present, `type: [\"string\", \"null\"]` allows null, `minLength: 1` makes a string non-empty, `enum` and `pattern` constrain the value, `default` fills a key the model left out. Mutually exclusive with `arguments` in one request. A tool created with `parameters` starts in `parameter_mode: strict`.","title":"Parameters","type":"object","isRequired":true,"uniqueKey":"parameters","typeLabel":"Parameters · object"},"content_type":{"title":"Content Type","type":"string","isRequired":true,"uniqueKey":"content_type","typeLabel":"string"},"timeout_seconds":{"title":"Timeout Seconds","type":"integer","isRequired":true,"uniqueKey":"timeout_seconds","typeLabel":"integer"},"error_handling":{"enum":["passthrough","hide"],"title":"Error Handling","type":"string","isRequired":true,"uniqueKey":"error_handling","typeLabel":"enum\u003cstring>"},"description":{"default":"","title":"Description","type":"string","uniqueKey":"description","typeLabel":"string"},"used_by":{"default":0,"description":"How many agents reference this tool in their draft configuration.","title":"Used By","type":"integer","uniqueKey":"used_by","typeLabel":"integer"},"arguments":{"description":"Older shape of `parameters`: each entry becomes a required string parameter. Mutually exclusive with `parameters` in one request. Reads return both, `arguments` being the string parameters of the schema.","items":{"properties":{"name":{"maxLength":64,"minLength":1,"title":"Name","type":"string","isRequired":true,"uniqueKey":"arguments.items.[INDEX].name","typeLabel":"string"},"description":{"default":"","maxLength":500,"title":"Description","type":"string","uniqueKey":"arguments.items.[INDEX].description","typeLabel":"string"}},"required":["name"],"title":"AgentWebhookArgumentPayload","type":"object","uniqueKey":"arguments.items.[INDEX]","typeLabel":"AgentWebhookArgumentPayload · object"},"title":"Arguments","type":"array","uniqueKey":"arguments","typeLabel":"AgentWebhookArgumentPayload · object[]"},"parameter_mode":{"default":"legacy","description":"Whether the agent runtime checks each call's arguments against `parameters` before running the tool. `legacy` (the default for tools created with `arguments`, and every tool from before this field existed): no check, the model's arguments run as sent. `strict` (the default for tools created with `parameters`): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with `strict: true`, Gemini on the platform's native channel runs validated function calling). Changing `parameters` never changes the mode, and the mode can be changed on its own.","enum":["legacy","strict"],"title":"Parameter Mode","type":"string","uniqueKey":"parameter_mode","typeLabel":"enum\u003cstring>"},"body_template":{"default":"","title":"Body Template","type":"string","uniqueKey":"body_template","typeLabel":"string"},"headers":{"items":{"properties":{"name":{"title":"Name","type":"string","isRequired":true,"uniqueKey":"headers.items.[INDEX].name","typeLabel":"string"},"kind":{"enum":["custom","authorization_bearer","authorization_basic"],"title":"Kind","type":"string","isRequired":true,"uniqueKey":"headers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","title":"Value","description":"Header value; null for credential kinds (authorization_bearer / authorization_basic), which are write-only.","uniqueKey":"headers.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"null","title":"Value","description":"Header value; null for credential kinds (authorization_bearer / authorization_basic), which are write-only.","uniqueKey":"headers.items.[INDEX].value.oneOf.1","typeLabel":"null"}],"uniqueKey":"headers.items.[INDEX].value","typeLabel":"string | null"},"has_secret":{"default":false,"description":"Whether a credential value is stored; the value itself is never returned.","title":"Has Secret","type":"boolean","uniqueKey":"headers.items.[INDEX].has_secret","typeLabel":"boolean"}},"required":["name","kind"],"title":"PublicToolHeader","type":"object","uniqueKey":"headers.items.[INDEX]","typeLabel":"PublicToolHeader · object"},"title":"Headers","type":"array","uniqueKey":"headers","typeLabel":"PublicToolHeader · object[]"},"mock_responses":{"items":{"properties":{"name":{"default":"","maxLength":120,"title":"Name","type":"string","uniqueKey":"mock_responses.items.[INDEX].name","typeLabel":"string"},"status_code":{"default":200,"maximum":599,"minimum":100,"title":"Status Code","type":"integer","uniqueKey":"mock_responses.items.[INDEX].status_code","typeLabel":"integer"},"content_type":{"default":"application/json","maxLength":128,"title":"Content Type","type":"string","uniqueKey":"mock_responses.items.[INDEX].content_type","typeLabel":"string"},"body":{"default":"","maxLength":100000,"title":"Body","type":"string","uniqueKey":"mock_responses.items.[INDEX].body","typeLabel":"string"}},"title":"AgentWebhookMockResponsePayload","type":"object","uniqueKey":"mock_responses.items.[INDEX]","typeLabel":"AgentWebhookMockResponsePayload · object"},"title":"Mock Responses","type":"array","uniqueKey":"mock_responses","typeLabel":"AgentWebhookMockResponsePayload · object[]"},"expects_response":{"default":true,"title":"Expects Response","type":"boolean","uniqueKey":"expects_response","typeLabel":"boolean"},"execution_mode":{"default":"blocking","enum":["blocking","fire_and_forget","background"],"title":"Execution Mode","type":"string","uniqueKey":"execution_mode","typeLabel":"enum\u003cstring>"}},"required":["tool_id","workspace_id","name","tool_type","method","url","created_at","updated_at","parameters","content_type","timeout_seconds","error_handling"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"tool_id":"\u003cstring>","workspace_id":"\u003cstring>","name":"\u003cstring>","tool_type":"webhook","method":"GET","url":"\u003cstring>","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","parameters":{},"content_type":"\u003cstring>","timeout_seconds":123,"error_handling":"passthrough","description":"","used_by":0,"arguments":[{"name":"\u003cstring>","description":""}],"parameter_mode":"legacy","body_template":"","headers":[{"name":"\u003cstring>","kind":"custom","value":"\u003cstring>","has_secret":false}],"mock_responses":[{"name":"","status_code":200,"content_type":"application/json","body":""}],"expects_response":true,"execution_mode":"blocking"}}},"exampleType":"generated"}},"exampleType":"generated"},"d4714b2b-ef72-46cf-ba65-183f88e79b4d":{"description":"Bad request syntax or unsupported method","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"29be8f9f-3f90-43e1-bfa1-7dc0b29b366d":{"description":"No permission -- see authorization schemes","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"96f7441a-b712-49f8-8f83-fe9dcbee800b":{"description":"Nothing matches the given URI","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"fc97209e-75d3-496f-aae0-c3a3daa2fde9":{"description":"","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"a0e157c8-e367-45f3-808a-98ef42b59735":{"description":"The server cannot process the request due to a high load","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"37e8ff61-da14-4095-8c59-1f588bf84397":{"BearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"39cecf54-e58d-4ac2-ab28-6d00babdd859":{"description":"Fish Audio API","url":"https://api.fish.audio"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","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":"hanabiaiinc","siteName":"Fish Audio","title":"Update Tool - Fish Audio","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-05T15:51:33.562Z","originalFileLocation":"api-reference/endpoint/agent/update-tool.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Patch tool fields; omitted fields keep their value (null is rejected — send an empty string to clear a text field).\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fish Audio\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update Tool - Fish Audio\">\u003cmeta data-mint-head property=\"og:description\" content=\"Patch tool fields; omitted fields keep their value (null is rejected — send an empty string to clear a text field).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fish Audio\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hanabiaiinc.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=Update+Tool\u0026amp;description=Patch+tool+fields%3B+omitted+fields+keep+their+value+%28null+is+rejected+%E2%80%94%0Asend+an+empty+string+to+clear+a+text+field%29.\u0026amp;theme=949dddfb68a78f6c8e39910d\u0026amp;signature=950526fb76a32b7d521d2891fc4bb991479f86138e7dafd060ea810b87b96550\">\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 Tool - Fish Audio\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Patch tool fields; omitted fields keep their value (null is rejected — send an empty string to clear a text field).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hanabiaiinc.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=Update+Tool\u0026amp;description=Patch+tool+fields%3B+omitted+fields+keep+their+value+%28null+is+rejected+%E2%80%94%0Asend+an+empty+string+to+clear+a+text+field%29.\u0026amp;theme=949dddfb68a78f6c8e39910d\u0026amp;signature=950526fb76a32b7d521d2891fc4bb991479f86138e7dafd060ea810b87b96550\">\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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fish Audio\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0e0e0e\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/agent/update-tool.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fish.audio/#organization\",\"name\":\"Fish Audio\",\"url\":\"https://docs.fish.audio\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/light.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=305973cd6a8d11dbf36d1ec682ee845e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fish.audio#website\",\"name\":\"Fish Audio\",\"url\":\"https://docs.fish.audio\",\"publisher\":{\"@id\":\"https://docs.fish.audio/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool#webpage\",\"url\":\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool\",\"name\":\"Update Tool\",\"description\":\"Patch tool fields; omitted fields keep their value (null is rejected — send an empty string to clear a text field).\",\"dateModified\":\"2026-08-05T15:51:33.562Z\",\"isPartOf\":{\"@id\":\"https://docs.fish.audio#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agents API\",\"item\":\"https://docs.fish.audio/api-reference/agent-errors\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tools\",\"item\":\"https://docs.fish.audio/api-reference/endpoint/agent/list-tools\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Update Tool\",\"item\":\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool#apireference\",\"headline\":\"Update Tool\",\"name\":\"Update Tool\",\"description\":\"Patch tool fields; omitted fields keep their value (null is rejected — send an empty string to clear a text field).\",\"url\":\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/update-tool#webpage\"},\"dateModified\":\"2026-08-05T15:51:33.562Z\",\"publisher\":{\"@id\":\"https://docs.fish.audio/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fish.audio#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fish Audio\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Fish Audio","nav":{"global":null,"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/overview/capabilities"}]},{"tab":"Agents","pages":[{"title":"Agents","href":"/agents/overview"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/developer-guide/sdk-guide/quickstart"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"Introduction","icon":"book","iconType":"solid","href":"/api-reference/introduction"},{"title":"Tracing \u0026 Performance Analysis","icon":"chart-line","iconType":"solid","href":"/api-reference/observability"},{"title":"Errors","icon":"triangle-exclamation","href":"/api-reference/errors"}]},{"group":"REST API","pages":[{"group":"Wallet","icon":"wallet","pages":[{"openapi":"get /wallet/{user_id}/api-credit","title":"Get API Credit","icon":"wallet","iconType":"solid","href":"/api-reference/endpoint/wallet/get-api-credit"},{"openapi":"get /wallet/{user_id}/package","title":"Get User Package","icon":"star","iconType":"solid","href":"/api-reference/endpoint/wallet/get-user-package"}]},{"group":"Voice Models","icon":"cube","pages":[{"openapi":"get /model","title":"List Models","icon":"list","iconType":"solid","href":"/api-reference/endpoint/model/list-models"},{"openapi":"post /model","title":"Create Model","icon":"circle-plus","iconType":"solid","href":"/api-reference/endpoint/model/create-model"},{"openapi":"get /model/{id}","title":"Get Model","icon":"circle-info","iconType":"solid","href":"/api-reference/endpoint/model/get-model"},{"openapi":"delete /model/{id}","title":"Delete Model","icon":"trash","iconType":"solid","href":"/api-reference/endpoint/model/delete-model"},{"openapi":"patch /model/{id}","title":"Update Model","icon":"pen-to-square","iconType":"solid","href":"/api-reference/endpoint/model/update-model"}]},{"group":"TTS (v1)","icon":"code","pages":[{"openapi":"post /v1/tts","title":"Text to Speech","icon":"comment-dots","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech"},{"openapi":"post /v1/tts/stream/with-timestamp","title":"Text to Speech Stream with Timestamps","icon":"waveform-lines","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech-stream-with-timestamps"},{"asyncapi":"api-reference/asyncapi.yml ttsLive","title":"WebSocket TTS Streaming","icon":"webhook","iconType":"solid","href":"/api-reference/endpoint/websocket/tts-live"},{"asyncapi":"api-reference/asyncapi.yml ttsLiveWithTimestamps","title":"WebSocket TTS with Timestamps","icon":"webhook","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech-live-with-timestamps"}]},{"group":"ASR (v1)","icon":"microphone","pages":[{"openapi":"post /v1/asr","title":"Speech to Text","icon":"microphone","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/speech-to-text"},{"asyncapi":"api-reference/asyncapi-asr-realtime.yml asrRealtime","title":"WebSocket Realtime Speech to Text","icon":"webhook","iconType":"solid","tag":"Preview","href":"/api-reference/endpoint/websocket/asr-realtime"}]},{"group":"Voice Design","icon":"wand-magic-sparkles","pages":[{"openapi":"post /v1/voice-design","title":"Voice Design","icon":"wand-magic-sparkles","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/voice-design"}]}]},{"group":"Agents API","pages":[{"title":"Agents API Errors","icon":"triangle-exclamation","href":"/api-reference/agent-errors"},{"group":"Agents","icon":"robot","pages":[{"openapi":"get /v1/agent/agents","title":"List Agents","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents"},{"openapi":"post /v1/agent/agents","title":"Create Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/create-agent"},{"openapi":"get /v1/agent/agents/{agent_id}","title":"Get Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent"},{"openapi":"patch /v1/agent/agents/{agent_id}","title":"Update Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/update-agent"},{"openapi":"delete /v1/agent/agents/{agent_id}","title":"Delete Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/delete-agent"},{"openapi":"get /v1/agent/agents/{agent_id}/config","title":"Get Draft Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-draft-config"},{"openapi":"patch /v1/agent/agents/{agent_id}/config","title":"Update Draft Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/update-draft-config"},{"openapi":"post /v1/agent/agents/{agent_id}/publish","title":"Publish Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/publish-agent"},{"openapi":"get /v1/agent/agents/{agent_id}/versions","title":"List Agent Versions","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/list-agent-versions"},{"openapi":"get /v1/agent/agents/{agent_id}/versions/{version_number}","title":"Get Agent Version","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-version"},{"openapi":"get /v1/agent/agents/{agent_id}/widget","title":"Get Widget Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-widget-config"}]},{"group":"Sessions","icon":"headset","pages":[{"openapi":"post /v1/agent/sessions","title":"Create Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/create-agent-session"},{"openapi":"get /v1/agent/sessions","title":"List Agent Sessions","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/list-agent-sessions"},{"openapi":"get /v1/agent/sessions/{session_id}","title":"Get Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-session"},{"openapi":"get /v1/agent/sessions/{session_id}/recording","title":"Get Agent Session Recording","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-session-recording"},{"openapi":"post /v1/agent/sessions/{session_id}/end","title":"End Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/end-agent-session"}]},{"group":"Tools","icon":"wrench","pages":[{"openapi":"get /v1/agent/tools","title":"List Tools","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/list-tools"},{"openapi":"post /v1/agent/tools","title":"Create Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/create-tool"},{"openapi":"get /v1/agent/tools/{tool_id}","title":"Get Tool","description":"Fetch one tool's full definition.","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/get-tool"},{"openapi":"patch /v1/agent/tools/{tool_id}","title":"Update Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/update-tool"},{"openapi":"delete /v1/agent/tools/{tool_id}","title":"Delete Tool","description":"Delete a tool.","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/delete-tool"},{"openapi":"get /v1/agent/tools/{tool_id}/agents","title":"List Agents Using Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents-using-tool"}]},{"group":"Tests","icon":"flask","pages":[{"openapi":"get /v1/agent/tests","title":"List Tests","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-tests"},{"openapi":"post /v1/agent/tests","title":"Create Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/create-test"},{"openapi":"get /v1/agent/tests/{test_id}","title":"Get Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test"},{"openapi":"patch /v1/agent/tests/{test_id}","title":"Update Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/update-test"},{"openapi":"delete /v1/agent/tests/{test_id}","title":"Delete Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/delete-test"},{"openapi":"put /v1/agent/agents/{agent_id}/tests/{test_id}","title":"Attach Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/attach-test"},{"openapi":"delete /v1/agent/agents/{agent_id}/tests/{test_id}","title":"Detach Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/detach-test"},{"openapi":"get /v1/agent/agents/{agent_id}/test-tools","title":"List Test Tools","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-tools"},{"openapi":"post /v1/agent/agents/{agent_id}/tests/run","title":"Run Tests","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/run-tests"},{"openapi":"get /v1/agent/agents/{agent_id}/test-batches","title":"List Test Batches","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-batches"},{"openapi":"get /v1/agent/agents/{agent_id}/test-batches/{batch_id}","title":"Get Test Batch","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test-batch"},{"openapi":"get /v1/agent/test-runs","title":"List Test Runs","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-runs"},{"openapi":"get /v1/agent/test-runs/{run_id}","title":"Get Test Run","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test-run"}]},{"group":"Knowledge Sources","icon":"book","pages":[{"openapi":"get /v1/agent/knowledge-sources","title":"List Knowledge Sources","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/list-knowledge-sources"},{"openapi":"post /v1/agent/knowledge-sources","title":"Create Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/create-knowledge-source"},{"openapi":"get /v1/agent/knowledge-sources/{source_id}","title":"Get Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/get-knowledge-source"},{"openapi":"patch /v1/agent/knowledge-sources/{source_id}","title":"Update Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/update-knowledge-source"},{"openapi":"delete /v1/agent/knowledge-sources/{source_id}","title":"Delete Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/delete-knowledge-source"},{"openapi":"get /v1/agent/knowledge-sources/{source_id}/agents","title":"List Agents Using Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents-using-knowledge-source"}]},{"group":"Phone Numbers","icon":"phone","pages":[{"openapi":"get /v1/agent/available-phone-numbers","title":"Search Available Phone Numbers","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/search-available-phone-numbers"},{"openapi":"get /v1/agent/phone-numbers","title":"List Phone Numbers","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/list-phone-numbers"},{"openapi":"post /v1/agent/phone-numbers","title":"Purchase Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/purchase-phone-number"},{"openapi":"get /v1/agent/phone-numbers/{phone_number_id}","title":"Get Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/get-phone-number"},{"openapi":"patch /v1/agent/phone-numbers/{phone_number_id}","title":"Update Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/update-phone-number"},{"openapi":"delete /v1/agent/phone-numbers/{phone_number_id}","title":"Release Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/release-phone-number"}]},{"group":"Phone Calls","icon":"phone-arrow-up-right","pages":[{"openapi":"post /v1/agent/phone-calls","title":"Create Phone Call","icon":"phone-arrow-up-right","iconType":"solid","href":"/api-reference/endpoint/agent/create-phone-call"}]}]},{"group":"SDK Reference","pages":[{"group":"Python SDK","icon":"python","pages":[{"title":"Overview","icon":"python","href":"/api-reference/sdk/python/overview"},{"group":"Reference","icon":"book-open","pages":[{"title":null,"href":"/api-reference/sdk/python/client"},{"title":null,"href":"/api-reference/sdk/python/resources"},{"title":null,"href":"/api-reference/sdk/python/types"},{"title":null,"href":"/api-reference/sdk/python/core"},{"title":null,"href":"/api-reference/sdk/python/utils"},{"title":null,"href":"/api-reference/sdk/python/exceptions"}]},{"title":"Legacy","icon":"clock-rotate-left","href":"/archive/python-sdk-legacy/index"}]},{"group":"JavaScript SDK","icon":"js","pages":[{"title":"JavaScript SDK Reference","sidebarTitle":"Reference","icon":"book","href":"/api-reference/sdk/javascript/api-reference"}]}]}]}]},"title":"Update Tool - Fish Audio","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}