Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.praison.ai/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Tools Doctor command diagnoses tool availability, checks dependencies, and reports issues with your PraisonAI tools setup.

Python API

from praisonai.templates import ToolsDoctor

# Create doctor instance
doctor = ToolsDoctor()

# Run full diagnostics
result = doctor.diagnose()

# Check results
print(f"praisonai-tools installed: {result['praisonai_tools_installed']}")
print(f"Built-in tools: {len(result['builtin_tools'])}")
print(f"Issues found: {len(result['issues'])}")

# Get JSON output
json_output = doctor.diagnose_json()

# Get human-readable output
human_output = doctor.diagnose_human()
print(human_output)

Diagnostic Results

The diagnose() method returns a dictionary with:
KeyTypeDescription
praisonai_tools_installedboolWhether praisonai-tools package is installed
praisonaiagents_installedboolWhether praisonaiagents is installed
builtin_toolslistList of available built-in tool names
praisonai_tools_availablelistTools from praisonai-tools package
custom_tools_dirslistStatus of custom tool directories
tool_dependenciesdictOptional dependencies for known tools
issueslistDetected issues with severity and hints

Custom Tool Directories

The doctor checks these default directories for custom tools:
  • ~/.praisonai/tools (primary)
  • ~/.config/praison/tools (XDG-friendly)
# Check with additional custom directories
doctor = ToolsDoctor(custom_dirs=["./my-tools", "~/shared-tools"])
result = doctor.diagnose()

for dir_info in result["custom_tools_dirs"]:
    status = "" if dir_info["exists"] else ""
    print(f"{status} {dir_info['path']} ({dir_info['tool_count']} tools)")

Tool Dependencies

The doctor checks optional dependencies for known tools:
result = doctor.diagnose()

for tool, deps in result["tool_dependencies"].items():
    missing = [d["name"] for d in deps if not d["available"]]
    if missing:
        print(f"Tool '{tool}' missing: {', '.join(missing)}")

Issue Severity Levels

SeverityDescription
errorCritical issue preventing tool usage
warningNon-critical issue that may affect functionality
infoInformational message about optional features