[
  {
    "tool_name": "memory_search",
    "description": "Search memory context via Memory API",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.memory_search",
    "authz_scope": "agent allowlist via services/router/agent_tools_config.py",
    "timeout": "httpx client default 60s",
    "retries": "none explicit",
    "service_owner": "router"
  },
  {
    "tool_name": "graph_query",
    "description": "Graph query tool for Neo4j-backed knowledge",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.graph_query",
    "authz_scope": "agent allowlist",
    "timeout": "bounded HTTP/driver call",
    "retries": "none explicit",
    "service_owner": "router"
  },
  {
    "tool_name": "web_search",
    "description": "Web search tool",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.web_search",
    "authz_scope": "agent allowlist",
    "timeout": "service/http defaults",
    "retries": "none explicit",
    "service_owner": "router"
  },
  {
    "tool_name": "web_extract",
    "description": "Extract text from URL",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.web_extract",
    "authz_scope": "agent allowlist",
    "timeout": "service/http defaults",
    "retries": "none explicit",
    "service_owner": "router"
  },
  {
    "tool_name": "crawl4ai_scrape",
    "description": "Deep scraping via Crawl4AI",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.crawl4ai_scrape",
    "authz_scope": "agent allowlist",
    "timeout": "external call timeout",
    "retries": "none explicit",
    "service_owner": "router"
  },
  {
    "tool_name": "remember_fact",
    "description": "Persist user fact into memory",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.remember_fact",
    "authz_scope": "agent allowlist",
    "timeout": "service/http defaults",
    "retries": "none explicit",
    "service_owner": "router"
  },
  {
    "tool_name": "image_generate",
    "description": "Image generation through swapper",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.image_generate",
    "authz_scope": "agent allowlist",
    "timeout": "120-300s paths",
    "retries": "soft retry gate in router",
    "service_owner": "router"
  },
  {
    "tool_name": "comfy_generate_image",
    "description": "ComfyUI image generation via comfy-agent",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.comfy_generate_image",
    "authz_scope": "agent specialized allowlist",
    "timeout": "timeout_s default 180",
    "retries": "poll loop until timeout",
    "service_owner": "router/comfy-agent"
  },
  {
    "tool_name": "comfy_generate_video",
    "description": "ComfyUI video generation via comfy-agent",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.comfy_generate_video",
    "authz_scope": "agent specialized allowlist",
    "timeout": "timeout_s default 300",
    "retries": "poll loop until timeout",
    "service_owner": "router/comfy-agent"
  },
  {
    "tool_name": "tts_speak",
    "description": "Text-to-speech",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.tts_speak",
    "authz_scope": "agent allowlist",
    "timeout": "http bounded",
    "retries": "none explicit",
    "service_owner": "router/swapper"
  },
  {
    "tool_name": "presentation_create",
    "description": "Create presentation artifact job",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.presentation_create",
    "authz_scope": "agent allowlist",
    "timeout": "async job submit",
    "retries": "job-level",
    "service_owner": "router/artifact-registry"
  },
  {
    "tool_name": "presentation_status",
    "description": "Check presentation job status",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.presentation_status",
    "authz_scope": "agent allowlist",
    "timeout": "short HTTP",
    "retries": "none explicit",
    "service_owner": "router/artifact-registry"
  },
  {
    "tool_name": "presentation_download",
    "description": "Download presentation artifact",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.presentation_download",
    "authz_scope": "agent allowlist",
    "timeout": "short HTTP",
    "retries": "none explicit",
    "service_owner": "router/artifact-registry"
  },
  {
    "tool_name": "file_tool",
    "description": "Action-based file generation/update/export tool",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.file_tool",
    "authz_scope": "agent allowlist",
    "timeout": "action-specific; djvu/pdf ops bounded by timeout_sec",
    "retries": "none explicit",
    "service_owner": "router"
  },
  {
    "tool_name": "market_data",
    "description": "Read market price/features/signals for SenpAI stack",
    "schema_path": "services/router/tool_manager.py#TOOL_DEFINITIONS.market_data",
    "authz_scope": "specialized (senpai + configured agents)",
    "timeout": "8-10s HTTP defaults in implementation",
    "retries": "none explicit",
    "service_owner": "router/market-data-service/senpai-md-consumer"
  }
]
