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

# Tools Doctor CLI

> CLI commands for diagnosing tool availability

`praisonai tools doctor` uses the same `ToolResolver` source of truth as `praisonai tools list` — the counts and tool names you see are guaranteed to match what actually loads at agent run time.

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# Run full diagnostics (human-readable output)
praisonai tools doctor

# Output diagnostics as JSON
praisonai tools doctor --json

# Example output (human-readable):
# ============================================================
# PraisonAI Tools Doctor
# ============================================================
#
# Core Packages:
#   ✓ praisonaiagents
#   ✓ praisonai-tools (optional)
#
# Built-in Tools (15):            ← resolver "builtin" bucket, sorted A-Z
#   • arxiv_search
#   • calculator
#   • internet_search
#   ... and 12 more
#
# praisonai-tools (8):            ← resolver "external" bucket, sorted A-Z
#   • csv_tool
#   • excel_tool
#   • pdf_tool
#   ... and 5 more
#
# Registered Tools (2):           ← resolver "registered" bucket (new)
#   • my_plugin_tool
#   • my_registered_fn
#
# Custom Tool Directories:
#   ✗ ~/.praison/tools
#   ✗ ~/.config/praison/tools
#
# ✓ No issues found
# ============================================================
```

<Note>
  **Counts now match `praisonai tools list`.** As of [PR #2642](https://github.com/MervinPraison/PraisonAI/pull/2642), both commands read from `ToolResolver.list_available_sources()`. Previously the doctor and the list command walked different partial subsets of the tool chain, so their counts could disagree. They are now the same source of truth.

  A tool that resolves at run time is visible in both `tools doctor` and `tools list`. A tool that does not resolve is reported as missing in both.
</Note>

### Fallback mode

When `ToolResolver` cannot be imported (e.g. the `praisonai` wrapper package is not installed), the doctor falls back to a direct `TOOL_MAPPINGS` / `praisonai_tools` scan. In this mode:

* Built-in and praisonai-tools counts are shown (unsorted, in dict-iteration order)
* The `Registered Tools` section is not shown
* The `local` bucket is not reflected

Install the `praisonai` wrapper package to get full resolver-backed output.
