ha-mcp-dev 8.6.0.dev2865__tar.gz → 8.6.0.dev2866__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (743) hide show
  1. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/PKG-INFO +3 -3
  2. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/README.md +2 -2
  3. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/pyproject.toml +1 -1
  4. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/pyproject.toml.orig +1 -1
  5. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/server.py +3 -26
  6. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/server_tool_text.py +50 -7
  7. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/en.json +1 -1
  8. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +1 -1
  9. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/backup.py +5 -5
  10. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/transforms/categorized_search.py +72 -3
  11. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/LICENSE +0 -0
  12. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/__init__.py +0 -0
  13. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/__main__.py +0 -0
  14. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_pypi_marker +0 -0
  15. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_rich_compat.py +0 -0
  16. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/__init__.py +0 -0
  17. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  18. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  19. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  20. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  21. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  22. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  23. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  24. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  25. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  26. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  27. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  28. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  29. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  30. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  31. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  32. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  33. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  34. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  35. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  36. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  37. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  38. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  39. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  40. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  41. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  42. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  43. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  44. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  45. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  46. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  47. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  48. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  49. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  50. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  51. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  52. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  53. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  54. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  55. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  56. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  57. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  58. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  59. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  60. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  61. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  62. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  63. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  64. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  65. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  66. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  67. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  68. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  69. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  70. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  71. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  72. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  73. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  74. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  75. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  76. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  77. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  78. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  79. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  80. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  81. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  82. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  83. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  84. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  85. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  86. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  87. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  88. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  89. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  90. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  91. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  92. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  93. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  94. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  95. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  96. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  97. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  98. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  99. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  100. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  101. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  102. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  103. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  104. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  105. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  106. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  107. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  108. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  109. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  110. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  111. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  112. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  113. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  114. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  115. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  116. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  117. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  118. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  119. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  120. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  121. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  122. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  123. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  124. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  125. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  126. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  127. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  128. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  129. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  130. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  131. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  132. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  133. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  134. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  135. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  136. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  137. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  138. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  139. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  140. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  141. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  142. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  143. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  144. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  145. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  146. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  147. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  148. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  149. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  150. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  151. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  152. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  153. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  154. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  155. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  156. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  157. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  158. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  159. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  160. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  161. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  162. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  163. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  164. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  165. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  166. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  167. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  168. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  169. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  170. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  171. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  172. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  173. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  174. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  175. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  176. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  177. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  178. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  179. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  180. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  181. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  182. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  183. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  184. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  185. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  186. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  187. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  188. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  189. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  190. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  191. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  192. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  193. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  194. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  195. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  196. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  197. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  198. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  199. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  200. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  201. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  202. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  203. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  204. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  205. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  206. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  207. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  208. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  209. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  210. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  211. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  212. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  213. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  214. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  215. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  216. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  217. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  218. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  219. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  220. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  221. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  222. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  223. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  224. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  225. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  226. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  227. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  228. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  229. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  230. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  231. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  232. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  233. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  234. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  235. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  236. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  237. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  238. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  239. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  240. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  241. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  242. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  243. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  244. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  245. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  246. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  247. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  248. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  249. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  250. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  251. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  252. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  253. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  254. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  255. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  256. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  257. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  258. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  259. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  260. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  261. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  262. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  263. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  264. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  265. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  266. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  267. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  268. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  269. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  270. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  271. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  272. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  273. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  274. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  275. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  276. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  277. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  278. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  279. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  280. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  281. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  282. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  283. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  284. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  285. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  286. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  287. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  288. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  289. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  290. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  291. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  292. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  293. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  294. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  295. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  296. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  297. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  298. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  299. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  300. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  301. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  302. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  303. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  304. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  305. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  306. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  307. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  308. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  309. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  310. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  311. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  312. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  313. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  314. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  315. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  316. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  317. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  318. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  319. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  320. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  321. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  322. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  323. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  324. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  325. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  326. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  327. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  328. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  329. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  330. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  331. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  332. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  333. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  334. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  335. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  336. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  337. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  338. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  339. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  340. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  341. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  342. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  343. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  344. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  345. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  346. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  347. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  348. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  349. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  350. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  351. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  352. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  353. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  354. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  355. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  356. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  357. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  358. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  359. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  360. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  361. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  362. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  363. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  364. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  365. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  366. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  367. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  368. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  369. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  370. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  371. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  372. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  373. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  374. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  375. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  376. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  377. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  378. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  379. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  380. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  381. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  382. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  383. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  384. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  385. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  386. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  387. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  388. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  389. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  390. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  391. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  392. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  393. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  394. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  395. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  396. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  397. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  398. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  399. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  400. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  401. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  402. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  403. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  404. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  405. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  406. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  407. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  408. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  409. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  410. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  411. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  412. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  413. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  414. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  415. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  416. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  417. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  418. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  419. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  420. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  421. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  422. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  423. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  424. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  425. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  426. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  427. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/requirements.txt +0 -0
  428. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  429. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  430. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  431. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  432. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  433. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  434. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  435. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  436. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  437. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  438. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  439. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  440. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  441. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  442. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  443. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  444. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  445. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  446. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  447. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  448. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  449. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  450. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  451. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  452. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  453. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  454. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  455. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  456. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  457. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  458. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  459. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  460. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  461. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  462. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  463. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  464. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  465. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  466. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  467. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  468. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  469. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  470. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  471. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  472. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  473. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  474. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  475. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  476. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  477. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  478. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  479. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  480. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  481. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  482. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  483. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  484. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/_version.py +0 -0
  485. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/auth/__init__.py +0 -0
  486. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/auth/consent_form.py +0 -0
  487. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/auth/oidc_compat.py +0 -0
  488. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/auth/provider.py +0 -0
  489. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/backup_manager.py +0 -0
  490. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/browser_landing.py +0 -0
  491. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/client/__init__.py +0 -0
  492. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/client/admin_routes.py +0 -0
  493. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/client/rest_client.py +0 -0
  494. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/client/supervisor_client.py +0 -0
  495. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/client/websocket_client.py +0 -0
  496. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/client/websocket_listener.py +0 -0
  497. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/config.py +0 -0
  498. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/config_backup.py +0 -0
  499. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/config_overrides.py +0 -0
  500. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/config_registry.py +0 -0
  501. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/config_settings.py +0 -0
  502. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  503. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  504. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  505. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  506. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  507. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  508. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/errors.py +0 -0
  509. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/ha_request_queue.py +0 -0
  510. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  511. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/http_transport.py +0 -0
  512. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/llm_exposure.py +0 -0
  513. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/log_filters.py +0 -0
  514. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/__init__.py +0 -0
  515. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/approval_queue.py +0 -0
  516. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/decision_pin.py +0 -0
  517. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/decisions.py +0 -0
  518. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/editing.py +0 -0
  519. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/evaluator.py +0 -0
  520. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/events.py +0 -0
  521. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/handlers.py +0 -0
  522. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/middleware.py +0 -0
  523. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/model.py +0 -0
  524. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/mrtr.py +0 -0
  525. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/persistence.py +0 -0
  526. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/server_channels.py +0 -0
  527. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/policy/value_sources.py +0 -0
  528. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/py.typed +0 -0
  529. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/read_only.py +0 -0
  530. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/redaction.py +0 -0
  531. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/renamed_tools.py +0 -0
  532. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  533. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  534. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  535. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  536. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  537. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  538. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  539. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  540. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  541. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  542. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  543. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  544. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  545. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  546. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  547. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  548. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  549. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/server_lifespan.py +0 -0
  550. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/__init__.py +0 -0
  551. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  552. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  553. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  554. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  555. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  556. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  557. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  558. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  559. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  560. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  561. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_theme.py +0 -0
  562. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  563. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  564. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  565. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  566. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  567. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  568. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  569. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  570. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  571. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  572. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  573. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  574. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  575. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  576. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  577. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  578. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  579. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings.css +0 -0
  580. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings.html +0 -0
  581. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  582. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  583. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  584. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  585. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  586. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  587. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  588. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  589. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/smoke_test.py +0 -0
  590. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  591. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/strict_bps.py +0 -0
  592. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tool_dispatch.py +0 -0
  593. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/__init__.py +0 -0
  594. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/auto_backup.py +0 -0
  595. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  596. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/best_practice_result.py +0 -0
  597. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  598. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  599. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  600. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/blueprint_write.py +0 -0
  601. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/bulk_selector.py +0 -0
  602. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/coercion.py +0 -0
  603. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/component_api.py +0 -0
  604. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/component_config_entries.py +0 -0
  605. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/component_config_reads.py +0 -0
  606. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  607. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/component_devices.py +0 -0
  608. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/component_registries.py +0 -0
  609. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  610. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  611. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  612. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  613. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  614. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  615. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  616. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  617. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  618. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  619. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  620. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  621. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  622. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  623. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  624. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  625. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  626. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  627. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  628. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/device_control.py +0 -0
  629. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/device_enrichment.py +0 -0
  630. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  631. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/entity_registration.py +0 -0
  632. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  633. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  634. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/hacs_registration.py +0 -0
  635. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/helpers.py +0 -0
  636. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  637. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/log_common.py +0 -0
  638. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/log_sources.py +0 -0
  639. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  640. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  641. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/radio/__init__.py +0 -0
  642. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/radio/base.py +0 -0
  643. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/radio/matter.py +0 -0
  644. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/radio/thread.py +0 -0
  645. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  646. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/radio/zwave.py +0 -0
  647. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/reference_validator.py +0 -0
  648. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/registry.py +0 -0
  649. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  650. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/response_helpers.py +0 -0
  651. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/scene_discovery.py +0 -0
  652. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/__init__.py +0 -0
  653. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/base.py +0 -0
  654. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/component.py +0 -0
  655. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/entities.py +0 -0
  656. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/legacy.py +0 -0
  657. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/modes.py +0 -0
  658. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/overview.py +0 -0
  659. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/response.py +0 -0
  660. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/search/state.py +0 -0
  661. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  662. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  663. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  664. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  665. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  666. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  667. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  668. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  669. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  670. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  671. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  672. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_addons.py +0 -0
  673. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_areas.py +0 -0
  674. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  675. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  676. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  677. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_calendar.py +0 -0
  678. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_camera.py +0 -0
  679. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_categories.py +0 -0
  680. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_code.py +0 -0
  681. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  682. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  683. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  684. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  685. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  686. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  687. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_dev.py +0 -0
  688. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_energy.py +0 -0
  689. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_entities.py +0 -0
  690. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  691. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_groups.py +0 -0
  692. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_hacs.py +0 -0
  693. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_history.py +0 -0
  694. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_integrations.py +0 -0
  695. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_labels.py +0 -0
  696. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_logs.py +0 -0
  697. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_radio.py +0 -0
  698. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_registry.py +0 -0
  699. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_resources.py +0 -0
  700. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_search.py +0 -0
  701. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  702. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_service.py +0 -0
  703. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_services.py +0 -0
  704. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_system.py +0 -0
  705. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_themes.py +0 -0
  706. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_todo.py +0 -0
  707. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_traces.py +0 -0
  708. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_updates.py +0 -0
  709. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_utility.py +0 -0
  710. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  711. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  712. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  713. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/tools_zones.py +0 -0
  714. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/util_helpers.py +0 -0
  715. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/validation_middleware.py +0 -0
  716. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/tools/ws_waiters.py +0 -0
  717. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/transforms/__init__.py +0 -0
  718. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/transforms/component_search.py +0 -0
  719. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  720. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  721. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/transport_security.py +0 -0
  722. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/update_check.py +0 -0
  723. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/__init__.py +0 -0
  724. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/config_hash.py +0 -0
  725. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/config_write_lock.py +0 -0
  726. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  727. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/data_paths.py +0 -0
  728. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  729. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/domain_handlers.py +0 -0
  730. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/entity_membership.py +0 -0
  731. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  732. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  733. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  734. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/operation_manager.py +0 -0
  735. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/python_sandbox.py +0 -0
  736. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  737. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/skill_loader.py +0 -0
  738. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/utils/usage_logger.py +0 -0
  739. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/visibility/__init__.py +0 -0
  740. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/visibility/enforcement.py +0 -0
  741. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/visibility/model.py +0 -0
  742. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/visibility/persistence.py +0 -0
  743. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2866}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.6.0.dev2865
3
+ Version: 8.6.0.dev2866
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -407,7 +407,7 @@ Set ENABLE_TOOL_SEARCH=true (or toggle the option in the HA app). The full catal
407
407
 
408
408
  | Tool | Purpose |
409
409
  |------|---------|
410
- | `ha_search_tools` | BM25 keyword search across all tools. Returns name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one. |
410
+ | `ha_search_tools` | BM25 English-keyword search across all tools, pinned ones included. Hidden tools return name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one; a pinned tool returns a name-only stub (`pinned: true`) pointing back at the tool list, and does not use up a result slot. |
411
411
  | `ha_call_read_tool` | Execute a `readOnlyHint` tool by name. Safe — clients can auto-approve. |
412
412
  | `ha_call_write_tool` | Execute a write tool that creates or updates data. |
413
413
  | `ha_call_delete_tool` | Execute a tool that removes / deletes data. |
@@ -419,7 +419,7 @@ A `ha_manage_*` tool combines several operations, so it is reachable from more t
419
419
  | Setting | Default | Description |
420
420
  |---------|---------|-------------|
421
421
  | `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
422
- | `TOOL_SEARCH_MAX_RESULTS` | `5` | Max results returned by `ha_search_tools` (range 2–10). |
422
+ | `TOOL_SEARCH_MAX_RESULTS` | `5` | Max hidden tools returned per `ha_search_tools` call (range 2–10); a pinned tool that ranks inside that top count is added as a name-only stub on top of it. |
423
423
  | `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
424
424
 
425
425
  ### When to enable
@@ -347,7 +347,7 @@ Set ENABLE_TOOL_SEARCH=true (or toggle the option in the HA app). The full catal
347
347
 
348
348
  | Tool | Purpose |
349
349
  |------|---------|
350
- | `ha_search_tools` | BM25 keyword search across all tools. Returns name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one. |
350
+ | `ha_search_tools` | BM25 English-keyword search across all tools, pinned ones included. Hidden tools return name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one; a pinned tool returns a name-only stub (`pinned: true`) pointing back at the tool list, and does not use up a result slot. |
351
351
  | `ha_call_read_tool` | Execute a `readOnlyHint` tool by name. Safe — clients can auto-approve. |
352
352
  | `ha_call_write_tool` | Execute a write tool that creates or updates data. |
353
353
  | `ha_call_delete_tool` | Execute a tool that removes / deletes data. |
@@ -359,7 +359,7 @@ A `ha_manage_*` tool combines several operations, so it is reachable from more t
359
359
  | Setting | Default | Description |
360
360
  |---------|---------|-------------|
361
361
  | `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
362
- | `TOOL_SEARCH_MAX_RESULTS` | `5` | Max results returned by `ha_search_tools` (range 2–10). |
362
+ | `TOOL_SEARCH_MAX_RESULTS` | `5` | Max hidden tools returned per `ha_search_tools` call (range 2–10); a pinned tool that ranks inside that top count is added as a name-only stub on top of it. |
363
363
  | `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
364
364
 
365
365
  ### When to enable
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2865"
7
+ version = "8.6.0.dev2866"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2865"
7
+ version = "8.6.0.dev2866"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's
@@ -28,6 +28,7 @@ from .server_tool_text import (
28
28
  SEARCH_KEYWORDS,
29
29
  SEARCH_TOOL_DESCRIPTION,
30
30
  SKILL_USE_BEFORE_KEYWORDS,
31
+ TOOL_DISCOVERY_INSTRUCTIONS,
31
32
  )
32
33
  from .tools.helpers import raise_tool_error
33
34
  from .transforms import DEFAULT_PINNED_TOOLS
@@ -456,32 +457,8 @@ class HomeAssistantSmartMCPServer:
456
457
 
457
458
  # Append tool search instructions when enabled
458
459
  if self.settings.enable_tool_search:
459
- instructions += (
460
- "\n\n## Tool Discovery\n"
461
- "This server uses search-based tool discovery. Most tools "
462
- "are NOT listed directly \u2014 use ha_search_tools to find them.\n\n"
463
- "WORKFLOW:\n"
464
- '1. Call ha_search_tools(query="...") to find relevant tools\n'
465
- "2. Results include name, description, parameters, and "
466
- "annotations (readOnlyHint/destructiveHint)\n"
467
- "3. Execute the discovered tool \u2014 two options:\n"
468
- " a) DIRECT CALL (preferred): Call the tool directly by "
469
- "name. All discovered tools are callable without a proxy.\n"
470
- " b) VIA PROXY: For permission-gated execution, use the "
471
- "matching proxy:\n"
472
- " - ha_call_read_tool \u2014 safe, read-only operations\n"
473
- " - ha_call_write_tool \u2014 creates or modifies data\n"
474
- " - ha_call_delete_tool \u2014 removes data permanently\n\n"
475
- "Once you know a tool\u2019s name, you do NOT need to search "
476
- "again \u2014 call it directly.\n\n"
477
- f"A few default tools are listed directly "
478
- f"({', '.join(DEFAULT_PINNED_TOOLS)}) — these are the "
479
- f"starting pins, and users can unpin the non-mandatory "
480
- f"ones via the Tools tab in the settings UI, so the "
481
- f"actual visible set may be a subset of this list. "
482
- f"Everything else must be discovered via search.\n\n"
483
- "DO NOT assume a capability is unavailable because you "
484
- "don't see a direct tool for it. ALWAYS search first."
460
+ instructions += TOOL_DISCOVERY_INSTRUCTIONS.format(
461
+ pinned=", ".join(DEFAULT_PINNED_TOOLS)
485
462
  )
486
463
 
487
464
  return instructions
@@ -9,12 +9,15 @@ from __future__ import annotations
9
9
 
10
10
  # Description for the unified search tool
11
11
  SEARCH_TOOL_DESCRIPTION = (
12
- "Search ALL Home Assistant tools by keyword. Returns matching tools "
13
- "with descriptions, parameters, and annotations (read/write/delete). "
14
- "Categories: entities, states, automations, scripts, dashboards, "
15
- "helpers, HACS, calendar, zones, labels, groups, areas, floors, "
16
- "history, statistics, devices, integrations, services, backups, "
17
- "todo, camera, blueprints, system, and more.\n\n"
12
+ "Search ALL Home Assistant tools by ENGLISH keyword. Returns matching "
13
+ "tools with descriptions, parameters, and annotations "
14
+ "(read/write/delete). Categories: entities, states, automations, "
15
+ "scripts, dashboards, helpers, HACS, calendar, zones, labels, groups, "
16
+ "areas, floors, history, statistics, devices, integrations, services, "
17
+ "backups, todo, camera, blueprints, system, and more.\n\n"
18
+ "Tools already in your tool list are callable directly \u2014 no search "
19
+ "needed. If one matches a search, it comes back as a name-only stub "
20
+ "(pinned: true); use the schema you already have.\n\n"
18
21
  "WORKFLOW:\n"
19
22
  "1. ha_search_tools(query='...') \u2014 find tools (this tool)\n"
20
23
  "2. Execute: call the tool DIRECTLY by name (preferred), or use "
@@ -32,6 +35,42 @@ SEARCH_TOOL_DESCRIPTION = (
32
35
  "Most tools are discoverable only through this search."
33
36
  )
34
37
 
38
+ # Appended to the server instructions when tool search is on; ``{pinned}``
39
+ # is the comma-joined DEFAULT_PINNED_TOOLS.
40
+ TOOL_DISCOVERY_INSTRUCTIONS = (
41
+ "\n\n## Tool Discovery\n"
42
+ "Tools already in your tool list are callable directly — "
43
+ "do not search for them. Once you know any tool’s name, "
44
+ "call it directly; never search for the same tool twice.\n\n"
45
+ "Most other tools are NOT listed directly — use "
46
+ "ha_search_tools to find them.\n\n"
47
+ "WORKFLOW:\n"
48
+ '1. Call ha_search_tools(query="...") with ENGLISH keywords '
49
+ "naming the operation (e.g. 'get entity state'). Translate "
50
+ "other languages first; entity, area and device names keep "
51
+ "their original spelling.\n"
52
+ "2. Results include name, description, parameters, and "
53
+ "annotations (readOnlyHint/destructiveHint). A tool already "
54
+ "in your list comes back as a name-only stub (pinned: true) "
55
+ "— use the schema you already have.\n"
56
+ "3. Execute the discovered tool — two options:\n"
57
+ " a) DIRECT CALL (preferred): Call the tool directly by "
58
+ "name. All discovered tools are callable without a proxy.\n"
59
+ " b) VIA PROXY: For permission-gated execution, use the "
60
+ "matching proxy:\n"
61
+ " - ha_call_read_tool — safe, read-only operations\n"
62
+ " - ha_call_write_tool — creates or modifies data\n"
63
+ " - ha_call_delete_tool — removes data permanently\n\n"
64
+ "A few default tools are listed directly "
65
+ "({pinned}) — these are the "
66
+ "starting pins, and users can unpin the non-mandatory "
67
+ "ones via the Tools tab in the settings UI, so the "
68
+ "actual visible set may be a subset of this list. "
69
+ "Everything else must be discovered via search.\n\n"
70
+ "DO NOT assume a capability is unavailable because you "
71
+ "don't see a direct tool for it. ALWAYS search first."
72
+ )
73
+
35
74
  # Extra keywords appended to tool descriptions for BM25 ranking.
36
75
  # Applied unconditionally via SearchKeywordsTransform so they also
37
76
  # improve retrieval for Claude's native deferred-tool search on
@@ -72,8 +111,12 @@ SEARCH_KEYWORDS: dict[str, str] = {
72
111
  "counter timer input_datetime input_select"
73
112
  ),
74
113
  "ha_get_entity": ("get entity state attributes details single specific entity_id"),
114
+ # #2576: BM25 has no stemming, so "lights" never matched "light". No
115
+ # control verbs (on/off/turn) here: they would pull "turn off lights"
116
+ # onto this read tool.
75
117
  "ha_get_state": (
76
- "get current state value single entity check status bulk multiple states"
118
+ "get current state value single entity check status bulk multiple states "
119
+ "which lights"
77
120
  ),
78
121
  "ha_config_set_automation": (
79
122
  "create update modify edit automation triggers conditions actions "
@@ -132,7 +132,7 @@
132
132
  "features.enable_tool_search.label": "Enable tool search",
133
133
  "features.enable_tool_search.help": "Replace the full tool catalog with search-based discovery. Reduces idle context by roughly 90%, to about 5K tokens. ⚠️ Do NOT enable this in clients with their own built-in tool search / deferred tools (claude.ai, Claude Desktop, Claude Code) — the two search layers conflict, and the client's built-in tool search is the better choice there; leave this off. Whether tools are deferred depends on your client and model combination: use this when your setup loads the full catalog up front — models without native deferred tools (e.g. Gemini, OpenAI-compatible local models, Claude Haiku), clients that inline all tool schemas regardless of model (e.g. GitHub Copilot CLI), or smaller context windows. Some Codex models and ChatGPT include deferred tools too — check your client/model directly to confirm its features so you don't leave this enabled unnecessarily. Tools are found via ha_search_tools and executed via categorized proxies (read/write/delete). Requires restart to take effect.",
134
134
  "features.tool_search_max_results.label": "Tool search max results",
135
- "features.tool_search_max_results.help": "Maximum number of tools returned by ha_search_tools when tool search is enabled. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
135
+ "features.tool_search_max_results.help": "Maximum number of hidden tools returned per ha_search_tools call when tool search is enabled; a pinned tool that ranks inside that top count is added as a short name-only entry on top of it. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
136
136
  "features.enable_tool_security_policies.label": "Enable Tool Security Policies (advanced)",
137
137
  "features.enable_tool_security_policies.help": "Gate high-stakes tool calls (lock/alarm control, automation writes, etc.) behind user approval. When a guarded tool is called, the agent tells the user to open the Tool Security Policies tab in the web UI and click Approve before the call proceeds. Per-tool rules with optional argument conditions are configured in the Tool Security Policies tab. Off by default. Requires restart to take effect.",
138
138
  "features.read_only_mode.label": "Read Only Mode",
@@ -13,7 +13,7 @@ const FEATURE_META = {
13
13
  },
14
14
  tool_search_max_results: {
15
15
  label: "Tool search max results",
16
- help: "Maximum number of tools returned by ha_search_tools when tool search is enabled. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
16
+ help: "Maximum number of hidden tools returned per ha_search_tools call when tool search is enabled; a pinned tool that ranks inside that top count is added as a short name-only entry on top of it. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
17
17
  },
18
18
  enable_tool_security_policies: {
19
19
  label: "Enable Tool Security Policies (advanced)",
@@ -1667,11 +1667,11 @@ survives an agent's own mistakes.
1667
1667
  - List snapshots (to discover a backup_id or confirm one landed): `ha_manage_backup(scope="snapshot", action="list")`
1668
1668
  - Restore full snapshot: `ha_manage_backup(scope="snapshot", action="restore", backup_id="dd7550ed")`
1669
1669
  - Delete an old snapshot (requires `enable_snapshot_delete=true`): `ha_manage_backup(scope="snapshot", action="delete", backup_id="dd7550ed", confirm=True)`
1670
- - On-demand entity snapshot before a manual UI edit: `ha_manage_backup(scope="edits", action="create", domain="helper_input_boolean", entity_id="kitchen_lights_active")`
1671
- - List recent auto-backups for one automation: `ha_manage_backup(scope="edits", action="list", domain="automation", entity_id="kitchen_lights")`
1672
- - View an auto-backup: `ha_manage_backup(scope="edits", action="view", backup_name="automation.kitchen_lights.20260521_153000.yaml")`
1673
- - Diff an auto-backup vs current state: `ha_manage_backup(scope="edits", action="diff", backup_name="automation.kitchen_lights.20260521_153000.yaml")`
1674
- - Restore an auto-backup: `ha_manage_backup(scope="edits", action="restore", backup_name="automation.kitchen_lights.20260521_153000.yaml")`
1670
+ - On-demand entity snapshot before a manual UI edit: `ha_manage_backup(scope="edits", action="create", domain="helper_input_boolean", entity_id="welcome_home_active")`
1671
+ - List recent auto-backups for one automation: `ha_manage_backup(scope="edits", action="list", domain="automation", entity_id="welcome_home")`
1672
+ - View an auto-backup: `ha_manage_backup(scope="edits", action="view", backup_name="automation.welcome_home.20260521_153000.yaml")`
1673
+ - Diff an auto-backup vs current state: `ha_manage_backup(scope="edits", action="diff", backup_name="automation.welcome_home.20260521_153000.yaml")`
1674
+ - Restore an auto-backup: `ha_manage_backup(scope="edits", action="restore", backup_name="automation.welcome_home.20260521_153000.yaml")`
1675
1675
  - Delete one auto-backup: `ha_manage_backup(scope="edits", action="delete", backup_name="...")`
1676
1676
  - Bulk-delete old auto-backups: `ha_manage_backup(scope="edits", action="delete", older_than_days=30)`
1677
1677
  """
@@ -92,6 +92,14 @@ DEFAULT_PINNED_TOOLS: tuple[str, ...] = (
92
92
  # Tool name patterns that indicate delete/remove operations
93
93
  _DELETE_PATTERNS = ("_remove_", "_delete_")
94
94
 
95
+ # Ranking is plain English keyword matching (BM25, no stemming, no
96
+ # translation), so a query in another language returns nothing (#2576).
97
+ SEARCH_QUERY_DESCRIPTION = (
98
+ "English keywords naming the operation, e.g. 'get entity state' or "
99
+ "'create automation'. Translate other languages to English first; "
100
+ "entity, area and device names keep their original spelling."
101
+ )
102
+
95
103
  # ``manage`` names one interface that intentionally combines several
96
104
  # operations (.gemini/styleguide.md, Tool Naming Convention). Such a tool is
97
105
  # categorised by its annotations like any other, but every call proxy can
@@ -428,9 +436,12 @@ class CategorizedSearchTransform(BM25SearchTransform):
428
436
  three category-specific proxies, each carrying appropriate MCP
429
437
  annotations for client-side permission handling.
430
438
 
431
- The unified ``ha_search_tools`` is inherited from BM25SearchTransform and
432
- searches across ALL tools regardless of category. Search results include
433
- each tool's full annotations so the LLM can determine which proxy to use.
439
+ The unified ``ha_search_tools`` searches across ALL tools regardless of
440
+ category, pinned ones included (issue #2576: a pinned tool vanishing
441
+ from search reads as "no such capability" to a small model). Hidden
442
+ hits carry their full definition and annotations so the LLM can pick a
443
+ proxy; pinned hits are rendered as a name-only stub pointing back at the
444
+ tool list, and never consume one of the ``max_results`` slots.
434
445
  """
435
446
 
436
447
  def __init__(
@@ -524,6 +535,48 @@ class CategorizedSearchTransform(BM25SearchTransform):
524
535
  self._delete_tools = delete
525
536
  self._last_catalog_hash = current_hash
526
537
 
538
+ def _make_search_tool(self) -> Tool:
539
+ """Search tool over the whole catalog (pinned tools included)."""
540
+ transform = self
541
+
542
+ async def search_tools(
543
+ query: Annotated[str, SEARCH_QUERY_DESCRIPTION],
544
+ ctx: Context = None, # type: ignore[assignment]
545
+ ) -> list[dict[str, Any]]:
546
+ """Search for tools using English keywords.
547
+
548
+ Returns matching tool definitions ranked by relevance,
549
+ in the same format as list_tools.
550
+ """
551
+ catalog = await transform.get_tool_catalog(ctx)
552
+ results = await transform._search(catalog, query)
553
+ return await transform._render_results(results)
554
+
555
+ return Tool.from_function(fn=search_tools, name=self._search_tool_name)
556
+
557
+ async def _search(self, tools: Sequence[Tool], query: str) -> Sequence[Tool]:
558
+ """Rank ``tools``; pinned hits ride along without using a result slot.
559
+
560
+ A pinned tool is kept only when it ranks inside the first
561
+ ``max_results`` of the whole catalog, so a weak match on a stop word
562
+ does not add a stub to every page.
563
+ """
564
+ # The base call (re)builds the index for this catalog; its own top-k
565
+ # is discarded because pinned hits must not crowd out hidden ones.
566
+ await super()._search(tools, query)
567
+ pinned_count = sum(t.name in self._always_visible for t in tools)
568
+ indices = self._index.query(query, self._max_results + pinned_count)
569
+ slots = self._max_results
570
+ results: list[Tool] = []
571
+ for rank, tool in enumerate(self._indexed_tools[i] for i in indices):
572
+ if tool.name in self._always_visible:
573
+ if rank < self._max_results:
574
+ results.append(tool)
575
+ elif slots:
576
+ results.append(tool)
577
+ slots -= 1
578
+ return results
579
+
527
580
  async def _render_results(self, tools: Sequence[Tool]) -> list[dict[str, Any]]:
528
581
  """Serialize search results with ``execute_via`` hints."""
529
582
  proxy_map: dict[Capability, str] = {
@@ -533,6 +586,22 @@ class CategorizedSearchTransform(BM25SearchTransform):
533
586
  }
534
587
  results = []
535
588
  for tool in tools:
589
+ if tool.name in self._always_visible:
590
+ # The client already holds this tool's full definition —
591
+ # repeating a 5-9KB schema here is what overflows small
592
+ # context windows (#2576).
593
+ results.append(
594
+ {
595
+ "name": tool.name,
596
+ "pinned": True,
597
+ "execute_via": (
598
+ f"{tool.name} is already in your tool list — "
599
+ "call it directly with the schema you have; "
600
+ "no search or proxy needed."
601
+ ),
602
+ }
603
+ )
604
+ continue
536
605
  data = tool.to_mcp_tool().model_dump(
537
606
  mode="json", exclude_none=True, by_alias=True
538
607
  )