> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getnexor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool health

> See how each tool your agents use behaved in real conversations and calls: runs, failures, empty results, platform blocks, top errors, and examples.

This report answers "are my agents' tools still working?". It reads what actually happened when the agent used each tool with real leads, not how the tool is configured. Use it to find an integration that stopped working, such as an expired credential or a search that never finds anything, before your customers notice.

It returns one row per tool, task, and channel, with the problem tools first.

## Before you start

* MCP keys need both `workflows:read` and `leads:read`, because examples include lead data. Full-access REST keys need nothing else.
* Test leads, sandbox leads, and Playground conversations are not counted.
* The report is read-only. Calling it does not run any tool.
* Errors return a stable code in `error`, such as `invalid_days`. Map the code to your own copy.

## Choose what to read

| Parameter | Detail |
| - | - |
| `days` | 1 to 14. Default 7. Counted in 24-hour periods back from the moment of the request. `window.since` echoes the start, in UTC. |
| `workflow_id` | Only one task (`workflow` in the API). A task from another account returns an empty `tools` list, not an error. |
| `tool_name` | Only one tool, by its exact name. Up to 120 characters. |
| `channel` | `whatsapp`, `unsupervised-whatsapp` (personal WhatsApp line), `instagram`, `messenger`, `webchat`, `sms`, `imessage`, `email`, or `call` (phone calls). |
| `only_problems` | `true` keeps only tools where failed and empty runs are at least half of the runs that reached the integration, with at least 3 such runs. |

## What each number means

| Field | What it counts |
| - | - |
| `calls` | Every time the agent used the tool: `ok + failed + empty + blocked`. A tool run during a phone call is counted once. |
| `ok` | The tool returned a usable answer. |
| `failed` | The tool returned an error, including an HTTP 4xx or 5xx answer from your system. |
| `empty` | The tool answered, but its result list (`items`, `data`, or `results`) was empty and no other list had items. |
| `blocked` | Nexor stopped the tool before it reached the integration. For example, the tool is not enabled at the lead's current stage, or it is a one-time action that already ran. |
| `failure_rate`, `empty_rate` | `failed` and `empty` divided by the runs that reached the integration (`calls - blocked`), from 0 to 1. Blocked runs are left out, because the integration never ran. |
| `last_call_at`, `last_ok_at`, `last_failure_at` | The most recent use, success, and failure in the window, in UTC. `null` when there was none. |
| `kind` | `custom` is one of your own HTTP tools, which calls a system outside Nexor. `builtin` is a Nexor tool. |
| `top_errors` | Up to 3 of the most frequent error messages, with how many times each one appeared. IDs, emails, and phone numbers are replaced with placeholders so equal errors group together. |
| `samples` | Up to 3 real runs: failed and empty runs first, then one successful run when there is one, then blocked runs. `args` is what the agent sent and `result` is what came back. |

## How to read the results

| What you see | What it usually means | What to do |
| - | - | - |
| Many `empty` on a `custom` tool | The agent reached your system, but the search found nothing. The parameters it sends do not match how your system stores the data: a name where a code is expected, accents, a date or phone format, or a filter that is too strict. | Compare `args` in `samples` with a record you know exists. Adjust the tool's parameter descriptions or your endpoint's matching. |
| `failed` with 401 or 403 in `top_errors` | Your system rejected the credential. It probably expired or was rotated. | Update the credential configured on the tool. |
| `failed` with another 4xx | The request does not match what your endpoint expects. | Check the tool's URL and parameters against your API. |
| `failed` with 5xx or timeouts | Your system failed or took too long to answer. | Check your system's logs at the times in `samples`. |
| `blocked` | Not an integration failure. The agent tried a tool that is not enabled at the lead's current stage, or repeated a one-time action. | If the agent needs the tool at that stage, change its **Tool stage gating** in the [agent settings](/docs/en/guides/agents/settings). Otherwise, review the instructions that lead the agent to try it. |
| `last_ok_at` earlier than `last_failure_at` | The tool worked and then started failing. | Look for a change in your system around the first failure. |
| The same tool works on one channel and fails or comes back empty on another | A channel is behaving differently. | Report it to Nexor support with both rows and the sample times. |

## Limits

* At most 100 rows. `truncated` is `true` when more matched.
* One request reads the most recent activity first. When the window had more tool activity than one request reads, `truncated` is `true` and `window.scanned_from` shows the moment the counts start from. Narrow with `workflow_id`, `tool_name`, `channel`, or fewer `days`.
* `args` and `result` are cut at 600 characters. API keys, tokens, passwords, and signatures are masked. Lead data such as names and phone numbers is not removed, so handle samples as lead data.


## API Specification

The full API specification for this endpoint is available in the [documentation index](https://docs.getnexor.ai/llms.txt).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.