FruxonDocs
IntegrationsTools

Updates an existing AI Tool.

Replaces the API-tool definition at `(integration, tool)` wholesale with the supplied object; this is a PUT, not a patch, so any field omitted from the body is reset. Use this for HTTP-based tools only — Python script tools must go through `/integrations/{integration}/tools/{tool}:python`, which validates the script payload differently.

PUT
/v1/tenants/{tenant}/integrations/{integration}/tools/{tool}
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

integration*string

The integration identifier.

tool*string

The unique identifier of the AI Tool.

tenant*string

The tenant identifier

The updated AI Tool data.

descriptor*
isInternal?boolean

When true, hides this tool from listing APIs. Used for internal platform tools.

createdAt?integer
Formatint64
id?string|null

Tool id can consist of only letters, numbers, underscores and hyphens.

modifiedAt?integer
Formatint64
integrationId?string|null

Integration

displayName?string|null
description?string|null
toolType?string

Categorization of a tool's execution backend. Wire form is UPPER_SNAKE per project convention; Unspecified = 0 is the AIP-126 zero-sentinel.

Value in"UNSPECIFIED" | "API" | "PREDEFINED" | "AGENT_TOOL" | "PYTHON_SCRIPT" | "LLM_BUILT_IN" | "MCP"
actionType?string

Reversibility classification of a tool's side effects. Wire form is UPPER_SNAKE per project convention; Unspecified = 0 is the AIP-126 zero-sentinel.

Value in"UNSPECIFIED" | "READ_ONLY" | "REVERSIBLE" | "IRREVERSIBLE"
resultType?string

Type categorization for an execution-engine typed value. Wire form is UPPER_SNAKE per project convention; Unspecified = 0 is the AIP-126 zero-sentinel and absorbs the previous Unknown value (they meant the same thing).

Note: the previous aspirational [EnumMember("EXECUTION_REFERENCE")] on Fruxon.Model.ExecutionEngine.ETypedValue.Tool was ignored by the legacy non-generic converter (so the actual wire form was the global-policy camelCase "tool"). Standardizing on "TOOL" matches the C# name and the rest of the codebase; renaming the conceptual category to "ExecutionReference" is left as a follow-up if/when product wants the semantic shift.

Value in"UNSPECIFIED" | "STRING" | "JSON" | "TOOL" | "BOOLEAN" | "INTEGER"
parametersMetadata?|null
authSettings?

Authentication settings for a tool — whether it supports OAuth and, if so, the OAuth scope sets it can request.

[key: string]?never

Response Body

curl -X PUT "https://api.fruxon.com/v1/tenants/string/integrations/string/tools/string" \  -H "Content-Type: application/json" \  -d '{    "descriptor": {}  }'
{
  "descriptor": {
    "apiTool": {
      "headers": {},
      "httpMethod": "string",
      "url": "string",
      "queryParameters": {},
      "body": "string",
      "formParameters": {},
      "resultType": "STRING",
      "resultTransformExpression": "string"
    },
    "predefinedTool": {
      "resultType": "STRING"
    },
    "mcpTool": {
      "serverUrl": "string",
      "mcpToolName": "string",
      "resultType": "STRING"
    },
    "codeTool": {
      "code": "string",
      "timeoutSeconds": 0,
      "packages": [
        "string"
      ],
      "resultType": "STRING"
    }
  },
  "isInternal": false,
  "createdAt": 0,
  "id": "string",
  "modifiedAt": 0,
  "integrationId": "string",
  "displayName": "string",
  "description": "string",
  "toolType": "API",
  "isModifiable": true,
  "actionType": "READ_ONLY",
  "resultType": "STRING",
  "parametersMetadata": [
    {
      "name": "string",
      "index": 0,
      "type": "String",
      "typeName": "string",
      "integerRange": {
        "min": 0,
        "max": 0
      },
      "floatRange": {
        "min": 0,
        "max": 0
      },
      "options": [],
      "asset": {
        "providers": null,
        "contentTypes": null,
        "vectorized": false
      },
      "displayName": "string",
      "description": "string",
      "required": false,
      "secret": false,
      "defaultValue": "string",
      "jsonSchema": null,
      "uiHint": "CODE",
      "rules": []
    }
  ],
  "authSettings": {
    "supportsOAuth": false,
    "oAuth": [
      {
        "scopeSize": 0,
        "scopes": [],
        "userScopes": [],
        "allScopes": [],
        "requiresResourceAuth": false,
        "successfulOAuthRedirect": "string"
      }
    ]
  }
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}
Empty
Empty
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}