---
title: "Run a tool"
method: POST
path: "/v1/tools/{category}/{action}"
tags: ["developer"]
---

# Run a tool

`POST /v1/tools/{category}/{action}`

## Request

- Base URL: `https://mcp-ads.com`
- URL: `https://mcp-ads.com/v1/tools/{category}/{action}`
- Auth: HTTP bearer

Runs one action for the profile in `X-Profile-Id` (or on your own connections when it is left off). The body is the action's arguments as a JSON object -- see GET /v1/tools?category=... for each action's parameters. Write actions need a read-write key. `ok` is false when the platform refused the call; the platform's message is in `result`.

## Path parameters

- `category` string, required
- `action` string, required

## Headers

- `X-Profile-Id` string

## Request body

- object

## Response `200`

Successful Response

- object

## Other responses

- `400`: The body is not a JSON object.
- `401`: Missing, invalid or revoked API key.
- `402`: The developer account has no active or trialing subscription.
- `403`: A read-only key tried to write, or the account is not a developer account.
- `404`: Unknown profile, connection, platform, category or action.
- `409`: Conflict: external_id already used, or the profile has not connected what the tool needs.
- `422`: Missing or invalid arguments; the message names the field.
- `502`: The platform failed in a way we could not explain.
- `504`: The action ran out of time.

---

[API](https://skmtc.dev/mcp-ads/apis/mcp-ads-developer-api.md) · [All operations](https://skmtc.dev/mcp-ads/apis/mcp-ads-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mcp-ads/apis/mcp-ads-developer-api/revisions/d55ee1f05ab3?raw)
