Updates an existing Python script tool.
Replaces the Python-script tool definition at `(integration, tool)`; the script body and its input schema are validated together before the write commits, so a malformed script or schema returns 400 without modifying the stored definition. This is the script-tool counterpart to `PUT /integrations/{integration}/tools/{tool}` and must be used for tools whose execution is sandboxed Python rather than an HTTP call.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The integration identifier.
The unique identifier of the AI Tool.
The tenant identifier
The updated AI Tool data.
When true, hides this tool from listing APIs. Used for internal platform tools.
int64Tool id can consist of only letters, numbers, underscores and hyphens.
int64Integration
Categorization of a tool's execution backend. Wire form is UPPER_SNAKE
per project convention; Unspecified = 0 is the AIP-126 zero-sentinel.
"UNSPECIFIED" | "API" | "PREDEFINED" | "AGENT_TOOL" | "PYTHON_SCRIPT" | "LLM_BUILT_IN" | "MCP"Reversibility classification of a tool's side effects. Wire form is
UPPER_SNAKE per project convention; Unspecified = 0 is the
AIP-126 zero-sentinel.
"UNSPECIFIED" | "READ_ONLY" | "REVERSIBLE" | "IRREVERSIBLE"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.
"UNSPECIFIED" | "STRING" | "JSON" | "TOOL" | "BOOLEAN" | "INTEGER"Authentication settings for a tool — whether it supports OAuth and, if so, the OAuth scope sets it can request.
Response Body
curl -X PUT "https://api.fruxon.com/v1/tenants/string/integrations/string/tools/string:python" \ -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
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}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.
Tests a tool execution with the provided parameters.
Runs a tool in test mode to validate its configuration and inputs before using it in agent workflows.