FruxonDocs
IntegrationsTools

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.

POST
/v1/tenants/{tenant}/integrations/{integration}/tools
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.

tenant*string

The tenant identifier

The AI Tool object to create.

id*string
Length1 <= length
integrationId?string
displayName?string|null
description?string
actionType?string

Optional action type classification. If not provided, it will be auto-suggested based on the HTTP method for API tools, or default to ReadOnly.

Value in"UNSPECIFIED" | "READ_ONLY" | "REVERSIBLE" | "IRREVERSIBLE"
parametersMetadata?
descriptor*
[key: string]?never

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",
      "bodyContentType": "string",
      "formParameters": {},
      "resultType": "STRING",
      "resultTransformExpression": "string",
      "pagination": {
        "cursorPath": "string",
        "hasMorePath": "string",
        "offset": null,
        "linkHeader": null
      },
      "successStatusCodes": [
        0
      ],
      "multipart": {
        "parts": []
      },
      "timeoutMs": 0,
      "responseSchema": null
    },
    "predefinedTool": {
      "resultType": "STRING"
    },
    "mcpTool": {
      "serverUrl": "string",
      "mcpToolName": "string",
      "resultType": "STRING"
    },
    "codeTool": {
      "code": "string",
      "timeoutSeconds": 0,
      "packages": [
        "string"
      ],
      "resultType": "STRING"
    }
  },
  "isInternal": false,
  "isAsync": false,
  "createdAt": 0,
  "id": "string",
  "modifiedAt": 0,
  "integrationId": "string",
  "displayName": "string",
  "description": "string",
  "toolType": "API",
  "isModifiable": true,
  "actionType": "READ_ONLY",
  "messagingRole": "CHANNEL_SEND",
  "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,
      "secretResolvable": false,
      "defaultValue": "string",
      "jsonSchema": null,
      "minLength": 0,
      "maxLength": 0,
      "pattern": "string",
      "validator": "string",
      "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
}