---
title: "Execute a developer test for a custom tool"
method: POST
path: "/tools/{toolId}/test"
tags: ["Custom tools"]
deprecated: true
---

# Execute a developer test for a custom tool

`POST /tools/{toolId}/test`

## Request

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

> **Deprecated.**

Requires `tools:execute`. Deprecated compatibility API; retained route, response shape and legacy scope. Migrate to test_http_action, actions:http:execute. Use actionId=http:<toolId>; diagnosticId=logId. New grants must be explicitly approved. No retirement date is assigned. See /api-docs/actions-api#tools-migration. Makes a real HTTP request; never retry automatically. Write-capable tests require confirmExternalEffects=true and the current configurationVersion. Obtain explicit user confirmation for this individual real HTTP request; never infer consent from management scopes or retry automatically. Missing/stale confirmation returns HTTP_TEST_CONFIRMATION_REQUIRED (403) before dispatch. Read-only tests do not require consent. This confirmation requirement also applies to deprecated Tools write tests: older clients must explicitly confirm and send configurationVersion. Explicit new Off mode returns ACTION_INACTIVE (403); historical inactive definitions without an explicit mode retain direct-test eligibility. No test endpoint for Sheets or collection actions; use Playground.

## Path parameters

- `toolId` string, required

## Request body

- ToolTestRequest
  - `input` object
  - `confirmExternalEffects` boolean: Set true only after explicit user confirmation for this real write-capable HTTP test. Read-only tests do not require confirmation.
  - `configurationVersion` string: Exact current configurationVersion from the tool configuration; required for write-capable tests.

## Response `200`

Tool test result. An invocation failure is represented by `ok: false` in this response.

- ToolTestResponse
  - `ok` boolean, required
  - `output` object
  - `error` ToolInvocationError
    - `code` string, required
    - `message` string, required
    - `retryable` boolean, required
  - `durationMs` integer, required

## 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)
