# 编辑工具

`POST` `/api/agent/finx/updateTool`

全量替换指定 HTTP 类型工具的配置（名称、描述、参数Schema、HTTP端点）。仅支持 HTTP 类型服务下的工具，MCP 工具不支持编辑。

**全量替换语义**：未传的字段会被清空，请先调用 getToolDetail 获取当前配置，修改后整体提交。

**鉴权限制**：本接口的 httpEndpoint 不支持 inheritAuth 与端点级 auth，编辑后该端点一律按「继承服务级鉴权」处理；需要端点独立凭证的场景请在 createTool 时配置。

## 请求参数

### 请求体（JSON）

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| agentId | integer | 是 | 智能体ID，需与该工具所属服务归属的智能体一致 |
| toolId | integer | 是 | 工具ID，由 listTools / getToolDetail 的 toolId 字段返回（HTTP 类型工具才有值） |
| toolName | string | 是 | 工具标识名，即 finx 命令中的工具名。必须以英文字母或下划线开头，只能包含字母、数字、下划线和连字符，长度不超过 64；同一服务内不可重名 |
| description | string | 否 | 工具描述。**智能体依赖这段描述判断什么场景该调用该工具**，请写清这个接口能做什么、何时用 |
| parameterSchema | string | 否 | **参数Schema（JSON字符串，不是JSON对象）**
- 内容为标准 JSON Schema，需作为**字符串**传递（注意转义内部的双引号）；保存时会做合法性校验，不合法直接报错
- 作用：告诉智能体调用该接口时要传哪些参数。每个属性的 description 直接影响模型选参的准确度，务必写清楚含义与取值示例
- HTTP 类型的工具 / serviceEndpoint 建议填写；MCP 类型不需要（工具入参由 MCP Server 动态提供）
- Schema 内容示例：`{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"自然语言查询，如：宁德时代最新研报"},"limit":{"type":"integer","description":"返回条数，默认10"}}}` |
| httpEndpoint | FinxHttpEndpointInfo | 否 | HTTP端点配置（全量替换，仅 HTTP 类型服务的工具需要填写）。
- 最终请求地址 = 服务的 baseUrl + 本端点的 path
- 注意：本接口的端点配置**不支持** inheritAuth 与端点级 auth，编辑后该端点一律按「继承服务级鉴权」处理；如需为单个接口配置独立凭证，请在 createTool 时通过 httpEndpoint 传入 inheritAuth=false 与 auth

**字段说明**
- method：HTTP 方法（必填），如 GET / POST / PUT / DELETE
- path：相对 baseUrl 的请求路径（必填），支持 `{变量}` 占位，如 `/api/stock/{symbol}`
- contentType：请求体 Content-Type（选填），如 `application/json`
- timeout：超时时间（毫秒，选填），不传时使用服务默认值
- queryParams：字段名数组（选填），声明哪些入参通过 URL 查询参数传递，未声明的入参走请求体
- streaming：是否以 SSE（text/event-stream）方式消费该端点（选填，默认 false）
- resultEventName：SSE 流中作为「模型观察结果」的保留事件名（选填，默认 `tool_observation`）。streaming=true 时，中间帧实时透传给终端界面，只有该事件名对应帧的 data 会作为模型观察结果；流中没有该事件时回退取最后一帧 |
|     method | string | 否 | - |
|     path | string | 否 | - |
|     contentType | string | 否 | - |
|     timeout | integer | 否 | - |
|     queryParams | array | 否 | - |
|     streaming | boolean | 否 | - |
|     resultEventName | string | 否 | - |

## 响应

### 200

| 参数名 | 类型 | 说明 |
|--------|------|------|
| httpStatusCode | integer | HTTP状态码 |
| message | string | 响应消息 |
| data | object | 响应数据 |
| success | boolean | 是否成功 |
| requestId | string | 上游请求ID，用于跨系统链路追踪排查问题 |
| errCode | string | 上游错误码，前端可据此做特殊UI处理 |

### 400

| 参数名 | 类型 | 说明 |
|--------|------|------|
| httpStatusCode | integer | HTTP状态码 |
| message | string | 响应消息 |
| data | object | 响应数据 |
| success | boolean | 是否成功 |
| requestId | string | 上游请求ID，用于跨系统链路追踪排查问题 |
| errCode | string | 上游错误码，前端可据此做特殊UI处理 |

### 500

| 参数名 | 类型 | 说明 |
|--------|------|------|
| httpStatusCode | integer | HTTP状态码 |
| message | string | 响应消息 |
| data | object | 响应数据 |
| success | boolean | 是否成功 |
| requestId | string | 上游请求ID，用于跨系统链路追踪排查问题 |
| errCode | string | 上游错误码，前端可据此做特殊UI处理 |

