Creates a new AI Tool.
Registers a new tool definition under the integration. The request body carries the integration ID it should belong to; the route `integration` is currently scoped for routing and logging only, so callers should ensure the two match. After creation, expose the tool to agents or MCP clients by adding its ID to the relevant allowlist.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The integration identifier.
The tenant identifier
The AI Tool object to create.
1 <= lengthReversibility 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"Response Body
curl -X POST "https://api.fruxon.com/v1/tenants/string/integrations/string/tools" \ -H "Content-Type: application/json" \ -d '{ "id": "string", "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
}Deletes an AI Tool.
Hard-deletes the tool definition; agents that still reference it by ID will fail to resolve the tool on their next invocation. If the tool ID appears in any integration's MCP `exposedToolIds` list it is the caller's responsibility to remove it via the MCP settings PATCH — stale entries are silently ignored by the MCP server but clutter the config.
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.