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|null
displayName?string|null
description?string|null
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"
parametersMetadata?|null
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",
      "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
}