---
title: "Operate Tools: catalog states and call outcomes"
description: "Describes MCP catalog freshness states, model-facing Tool naming rules, and Tool Call outcome analytics for operating Duale AI Tools."
lang: en
status: public-preview
lastUpdated: 2026-11-05
url: https://dev.duale.ai/en/docs/tools/operations
---

## AI-generated summary

This page covers catalog freshness states, connection policy, model-facing Tool naming, call outcome analytics, and troubleshooting for MCP Connections.

- Catalog freshness states and connection policy.
- Changing MCP catalog behavior and incompatible Tools.
- Model-facing Tool naming and collision resolution.
- Tool Call outcomes, reliability metrics, and analytics categories.
- Troubleshooting an MCP Connection from visible symptoms.

Summaries were generated by AI.

---

Under **Tools**, **Status** and **Catalog** show whether an MCP Connection is enabled, whether its catalog is current,
and which Tools Duale AI can offer. **Analytics** shows the recorded final outcomes of MCP and SDK Tool Calls. Neither
view proves that a server is reachable now or that the next call will succeed.

The [Tools reference](https://dev.duale.ai/en/docs/tools/reference.md) owns MCP server compatibility and the call contract. [Tool
limits](https://dev.duale.ai/en/docs/tools/limits.md) owns every catalog and call limit.

## Follow a catalog through its freshness states

```mermaid
flowchart LR
    accTitle: Catalog freshness states of one MCP Connection
    accDescr {
      A new Connection's catalog shows Not observed until its first successful
      check. A successful check makes the catalog Active, or No Tools reported
      when the server lists no Tools. When no check succeeds for seven minutes,
      the catalog becomes Expired and its Tools are no longer offered.
      Disabling the Connection stops checks, so its catalog expires seven
      minutes later. The next successful check makes an Expired catalog current
      again.
    }
    NotObserved[Not observed]
    Active["Active, compatible Tools can be offered"]
    Empty[No Tools reported]
    Expired["Expired, Tools not offered"]
    Disable["Connection disabled, checks stop"]

    NotObserved -->|successful check with Tools| Active
    NotObserved -->|successful check, empty list| Empty
    Active -->|successful check, empty list| Empty
    Empty -->|successful check with Tools| Active
    Active -->|no successful check for 7 minutes| Expired
    Empty -->|no successful check for 7 minutes| Expired
    Disable -.->|7 minutes later| Expired
    Expired -->|successful check with Tools| Active
    Expired -->|successful check, empty list| Empty
```

Connection policy is a separate setting. Blocking calls keeps catalog checks running; disabling the Connection stops
them, as the diagram shows.

### Connection policy

| State                | What it means                                                                     | What to do next                                      |
| -------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------- |
| Enabled, allow calls | Catalog checks run and compatible Tools can be offered after a successful check   | Inspect catalog freshness and test a low-risk call   |
| Enabled, block calls | Catalog checks continue, but new MCP calls are blocked                            | Review the catalog or allow calls when ready         |
| Disabled             | Catalog checks and new MCP calls stop; configuration and assignments remain saved | Enable the Connection when you want checks to resume |

While the Dashboard fetches catalog status, it shows **Loading**. If that read fails, it shows **Unavailable**. Retry
the read; this state does not prove that the remote MCP server is unavailable.

### Catalog freshness

| State             | What it means                                                       | What to do next                                                                         |
| ----------------- | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Not observed      | No successful complete catalog check exists yet                     | Check the endpoint and remote credential; Duale AI keeps trying while enabled           |
| Active            | The latest successful complete catalog check is still fresh         | Inspect Tool compatibility; this state does not run or verify a Tool                    |
| Expired           | No successful catalog check refreshed the catalog for seven minutes | Check remote availability and access; expired Tools are not offered for new model turns |
| No Tools reported | A successful complete check returned an empty catalog               | Confirm that the remote account is permitted to list Tools                              |

While a Connection is enabled, Duale AI checks its catalog about every five minutes. After a failed check, it retries at
growing intervals of up to about 15 minutes for as long as the Connection stays enabled. A failed check does not
refresh an active catalog. Saving a change to the Connection starts a new check at once; after you fix the server
itself, the next scheduled check refreshes the catalog.

These states show whether Duale AI has a recent successful catalog, not why a check failed. **Not observed** and
**Expired** do not distinguish DNS, TLS, authentication, protocol, pagination, or limit failures.

## Review a changing MCP catalog

An MCP server owns its catalog and can change it without a Duale AI release. After a successful complete check, the
latest definitions replace the previous catalog.

Every compatible Tool added later becomes eligible for every assigned Agent Identity when calls are allowed. There is
no per-Tool allowlist, exclusion, or catalog-version approval. If you need a controlled Tool lifecycle, publish the
approved functions through an [SDK Tool Host](https://dev.duale.ai/en/docs/sdk/tools.md). [Tool limits](https://dev.duale.ai/en/docs/tools/limits.md) states how far
a catalog can grow before a check or an Agent Identity reaches a limit.

The Catalog view keeps incompatible Tools visible with a reason, but does not offer them to a model. A Tool is
incompatible when Duale AI cannot pass its input schema to a model, when it uses a [reserved argument
name](https://dev.duale.ai/en/docs/tools/limits.md#reserved-argument-names), or when it declares a dynamic transport header that the
server's MCP revision cannot carry. [Confirm MCP server
compatibility](https://dev.duale.ai/en/docs/tools/reference.md#confirm-mcp-server-compatibility) names the revision that carries it.

Tool names, titles, descriptions, input-schema text, and server annotations are content you do not control. They can
influence model Tool selection and proposed arguments. Annotations such as read-only, destructive, idempotent, or
open-world are hints only. They never grant access or change call policy. The Task view separately estimates the
impact of each call from its recorded definition and arguments. This is a per-call estimate, not a permanent category
or a safety certification for the Tool. [Read Effects](https://dev.duale.ai/en/docs/agent-harness/executors.md#read-effects-and-their-evidence)
explains the fields and how Duale AI estimates them.

Expired Tools remain visible with their last successful definitions and assignments, but they cannot be offered or
called. They stay visible after checks stop because the Connection was disabled or deleted.

## Understand model-facing Tool names

The Catalog view shows both the native Tool name reported by the server and the short model-facing name used during a
Task. A unique Tool normally starts with `mcp_` followed by a readable form of its native name. SDK Tools start with
`sdk_`.

If two Tools would receive the same model-facing name, Duale AI qualifies every member of the collision with readable
Source context. If that still collides, it adds a short stable suffix. It never merges Tools from different Sources,
even when their schemas match, because those Sources can use different credentials and data.

For example, if **CRM Production** and **CRM Sandbox** both expose `search_contacts`, Duale AI qualifies both names,
such as `mcp_crm_production_search_contacts` and `mcp_crm_sandbox_search_contacts`. It does not leave one Tool as
`mcp_search_contacts` while renaming only the other, and it does not expose a Connection identifier to the model.

Duale AI computes names from the current catalog and does not reserve them permanently. A catalog change can therefore
change a model-facing name before the next model turn. A Tool Call always reaches the Tool the model chose, even if a
later catalog change renames it.

A name can stay qualified after the Tool it collided with expires, or after that Connection is disabled or deleted.

## Read call outcomes and reliability

Analytics counts one final outcome for each Tool Call the model requested, except a Tool Call that a Duale AI safety
check blocked: Duale AI never sends that call, so Analytics does not count it. It excludes catalog checks. The
organization view provides an aggregate and breakdowns by Tool Source, model-facing Tool name, and Agent Identity.

Analytics uses the four Tool Call outcomes that [Read a Tool Call
outcome](https://dev.duale.ai/en/docs/agent-harness.md#read-a-tool-call-outcome) defines: **Succeeded**, **Failed**, **Outcome unknown**, and
**Blocked**. For an MCP Tool, **Blocked** includes a call refused by **Block calls** and a call to a disabled Connection. A call to a
deleted Connection ends as **Failed**. Analytics also
shows four categories of its own:

| Category              | Meaning                                                                |
| --------------------- | ---------------------------------------------------------------------- |
| Denied                | The current assignment or authorization prevented the call             |
| Unsupported           | The Tool or its returned result is outside the supported call contract |
| Cancelled before send | The call ended before the remote Tool started                          |
| Other                 | The recorded outcome is not one of the named categories                |

**Confirmed success rate** is `succeeded / (succeeded + failed)`, shown as a percentage rounded to two decimal places.
Every other outcome is outside that denominator. The Dashboard shows the rate only once the selected period holds
enough succeeded or failed calls; below that, it shows only the counts.

Tools Analytics are aggregate operational evidence. They do not show Tool arguments or results, prove the state of an
external system, or replace a per-call business or audit record. Open the Task view for the retained input, result and
Effect estimate of an individual call.

On an Executor page, the **Success, 7 days** column uses the same calculation for this Agent Identity and the exact
Tool and Source. Its link opens Tools Analytics with that Agent Identity, Tool, Source and the same absolute period.
**Not available** means the read did not provide a figure; it is different from **No confirmed calls**.

[Evidence and audit](https://dev.duale.ai/en/docs/security/evidence-and-audit.md) explains which Platform records are available and what they
cannot prove.

## Troubleshoot an MCP Connection from the visible symptom

Start from the state or outcome that the Dashboard shows. [Troubleshoot Tools](https://dev.duale.ai/en/docs/tools/troubleshooting.md) gives
the first check and the safe next action for each catalog state, call outcome, and temporary pause.

## Related content

- [Tools troubleshooting: catalog, calls, recovery](https://dev.duale.ai/en/docs/tools/troubleshooting.md)
- [MCP server compatibility and call contract](https://dev.duale.ai/en/docs/tools/reference.md)
- [Tool limits: Source, MCP, and Agent Identity boundaries](https://dev.duale.ai/en/docs/tools/limits.md)
- [Tools: sources, Built-in Tools, and source selection](https://dev.duale.ai/en/docs/tools.md)
- [SDK troubleshooting: symptoms, causes, and fixes](https://dev.duale.ai/en/docs/sdk/troubleshooting.md)
- [Agent harness: execution model and Tool Call outcomes](https://dev.duale.ai/en/docs/agent-harness.md)

---

## Sitemap

See the full [Markdown sitemap](https://dev.duale.ai/sitemap.md) for all pages.
