---
title: "Read a custom AI tool"
method: GET
path: "/tools/{toolId}"
tags: ["Custom tools"]
deprecated: true
---

# Read a custom AI tool

`GET /tools/{toolId}`

## Request

- Base URL: `https://platform-api.visitoai.com/m2m/v1`
- URL: `https://platform-api.visitoai.com/m2m/v1/tools/{toolId}`
- Auth: HTTP bearer

> **Deprecated.**

Requires `tools:read`. Deprecated compatibility API; unchanged behavior and legacy scope. Migrate to get_action_configuration, action_configurations:read. Use actionId=http:<toolId>; diagnosticId=logId. New grants must be explicitly approved. No retirement date is assigned. See /api-docs/actions-api#tools-migration.

## Path parameters

- `toolId` string, required

## Response `200`

Custom tool definition

- ToolResponse
  - `tool` Tool, required
    - `toolId` string, required
    - `tenantId` string, required
    - `name` string, required
    - `description` string, required
    - `parameters` object, required
    - `endpoint` ToolEndpoint, required
      - `url` string, uri, required
      - `method` 'GET' | 'POST', required
      - `timeoutMs` integer
      - `path` string
    - `auth` object, required
      - `type` 'none' | 'bearer' | 'api_key', required
      - `headerName` string
      - `secretLastFour` string
      - `configured` boolean, required
    - `active` boolean, required
    - `readOnly` boolean, required
    - `allowInPlayground` boolean, required
    - `propertyIds` string[], required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `mode` 'off' | 'playground' | 'active' | 'legacy_live_only': Computed availability. legacy_live_only preserves existing HTTP live access without Playground access until explicitly changed.
    - `playgroundOnly` boolean
    - `configurationVersion` string, nullable: Opaque current action and connection configuration token. Confirm this exact value for write-capable tests.
    - `scopeMode` 'tenant' | 'businesses': tenant applies throughout this workspace and requires empty propertyIds; businesses uses explicitly selected active business IDs. Omission preserves legacy scope semantics. Scope is not an execution permission.
    - `connectorId` string
    - `connectionId` string
    - `revision` integer
    - `version` integer, nullable
    - `runtimeName` string

## Other responses

- `default`: Structured error

---

[API](https://skmtc.dev/visitoai/apis/visito-m2m-api.md) - [All operations](https://skmtc.dev/visitoai/apis/visito-m2m-api/llms.txt) - [OpenAPI document](https://skmtc.dev/visitoai/apis/visito-m2m-api/revisions/98377d35c234?raw)
