unique_toolkit 1.16.2__tar.gz → 1.16.4__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 (172) hide show
  1. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/CHANGELOG.md +7 -0
  2. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/PKG-INFO +8 -1
  3. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/pyproject.toml +1 -1
  4. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +7 -28
  5. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +88 -2
  6. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/schemas.py +17 -5
  7. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/LICENSE +0 -0
  8. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/README.md +0 -0
  9. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/__init__.py +0 -0
  10. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/_base_service.py +0 -0
  11. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/_time_utils.py +0 -0
  12. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  13. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  14. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  15. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  16. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  17. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  18. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  19. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/default_language_model.py +0 -0
  20. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/endpoint_builder.py +0 -0
  21. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  22. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/exception.py +0 -0
  23. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  24. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  25. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  26. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/string_utilities.py +0 -0
  27. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  28. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/token/token_counting.py +0 -0
  29. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/utils/__init__.py +0 -0
  30. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/utils/files.py +0 -0
  31. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  32. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  33. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  34. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/validate_required_values.py +0 -0
  35. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/_common/validators.py +0 -0
  36. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/__init__.py +0 -0
  37. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  38. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  39. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/config.py +0 -0
  40. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  41. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  42. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  43. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  44. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  45. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  46. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  47. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  48. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  49. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  50. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  51. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  52. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  53. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  54. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  55. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  56. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  57. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  58. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  59. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  60. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  61. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  62. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  63. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  64. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  65. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  66. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/__init__.py +0 -0
  67. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  68. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  69. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  70. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  71. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  72. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  73. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  74. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  75. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  76. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -0
  77. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
  78. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  79. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +0 -0
  80. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
  81. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  82. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
  83. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  84. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  85. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  86. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  87. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  88. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  89. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  90. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/config.py +0 -0
  91. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/factory.py +0 -0
  92. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  93. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  94. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  95. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  96. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  97. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  98. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  99. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  100. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  101. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/schemas.py +0 -0
  102. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  103. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/tool.py +0 -0
  104. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  105. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  106. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  107. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  108. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  109. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  110. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  111. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  112. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  113. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/__init__.py +0 -0
  114. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/dev_util.py +0 -0
  115. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/init_logging.py +0 -0
  116. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/init_sdk.py +0 -0
  117. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/performance/async_tasks.py +0 -0
  118. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  119. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/schemas.py +0 -0
  120. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/unique_settings.py +0 -0
  121. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/app/verification.py +0 -0
  122. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/__init__.py +0 -0
  123. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/constants.py +0 -0
  124. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/deprecated/service.py +0 -0
  125. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/functions.py +0 -0
  126. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/responses_api.py +0 -0
  127. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/schemas.py +0 -0
  128. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/service.py +0 -0
  129. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/state.py +0 -0
  130. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/chat/utils.py +0 -0
  131. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/content/__init__.py +0 -0
  132. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/content/constants.py +0 -0
  133. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/content/functions.py +0 -0
  134. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/content/schemas.py +0 -0
  135. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/content/service.py +0 -0
  136. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/content/smart_rules.py +0 -0
  137. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/content/utils.py +0 -0
  138. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/embedding/__init__.py +0 -0
  139. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/embedding/constants.py +0 -0
  140. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/embedding/functions.py +0 -0
  141. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/embedding/schemas.py +0 -0
  142. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/embedding/service.py +0 -0
  143. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/embedding/utils.py +0 -0
  144. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/framework_utilities/__init__.py +0 -0
  145. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  146. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  147. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  148. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  149. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  150. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/framework_utilities/utils.py +0 -0
  151. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/__init__.py +0 -0
  152. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/builder.py +0 -0
  153. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/constants.py +0 -0
  154. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/default_language_model.py +0 -0
  155. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/functions.py +0 -0
  156. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/infos.py +0 -0
  157. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/prompt.py +0 -0
  158. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/reference.py +0 -0
  159. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/service.py +0 -0
  160. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/language_model/utils.py +0 -0
  161. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/protocols/support.py +0 -0
  162. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/services/__init__.py +0 -0
  163. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/services/chat_service.py +0 -0
  164. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/services/knowledge_base.py +0 -0
  165. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/short_term_memory/__init__.py +0 -0
  166. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/short_term_memory/constants.py +0 -0
  167. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/short_term_memory/functions.py +0 -0
  168. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/short_term_memory/schemas.py +0 -0
  169. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/short_term_memory/service.py +0 -0
  170. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/smart_rules/__init__.py +0 -0
  171. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/smart_rules/compile.py +0 -0
  172. {unique_toolkit-1.16.2 → unique_toolkit-1.16.4}/unique_toolkit/test_utilities/events.py +0 -0
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.16.4] - 2025-10-18
9
+ - Fix bug with MCP tool parameters schema
10
+
11
+ ## [1.16.3] - 2025-10-18
12
+ - Add logging of MCP tool schema and constructed parameters
13
+
7
14
  ## [1.16.2] - 2025-10-16
8
15
  - Reduce operation dependency on path instead of full url
9
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.16.2
3
+ Version: 1.16.4
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -117,6 +117,13 @@ All notable changes to this project will be documented in this file.
117
117
 
118
118
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
119
119
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
120
+
121
+ ## [1.16.4] - 2025-10-18
122
+ - Fix bug with MCP tool parameters schema
123
+
124
+ ## [1.16.3] - 2025-10-18
125
+ - Add logging of MCP tool schema and constructed parameters
126
+
120
127
  ## [1.16.2] - 2025-10-16
121
128
  - Reduce operation dependency on path instead of full url
122
129
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.16.2"
3
+ version = "1.16.4"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -1,8 +1,8 @@
1
1
  import json
2
+ import logging
2
3
  from typing import Any, Dict
3
4
 
4
5
  import unique_sdk
5
- from pydantic import BaseModel, Field, create_model
6
6
 
7
7
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
8
8
  from unique_toolkit.agentic.tools.mcp.models import MCPToolConfig
@@ -19,6 +19,8 @@ from unique_toolkit.language_model.schemas import (
19
19
  LanguageModelToolDescription,
20
20
  )
21
21
 
22
+ logger = logging.getLogger(__name__)
23
+
22
24
 
23
25
  class MCPToolWrapper(Tool[MCPToolConfig]):
24
26
  """Wrapper class for MCP tools that implements the Tool interface"""
@@ -39,39 +41,16 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
39
41
  def tool_description(self) -> LanguageModelToolDescription:
40
42
  """Convert MCP tool schema to LanguageModelToolDescription"""
41
43
  # Create a Pydantic model from the MCP tool's input schema
42
- parameters_model = self._create_parameters_model()
44
+ logger.info(
45
+ "MCP tool %s schema %s", self._mcp_tool.name, self._mcp_tool.input_schema
46
+ )
43
47
 
44
48
  return LanguageModelToolDescription(
45
49
  name=self.name,
46
50
  description=self._mcp_tool.description or "",
47
- parameters=parameters_model,
51
+ parameters=self._mcp_tool.input_schema,
48
52
  )
49
53
 
50
- def _create_parameters_model(self) -> type[BaseModel]:
51
- """Create a Pydantic model from MCP tool's input schema"""
52
- properties = self._mcp_tool.input_schema.get("properties", {})
53
- required_fields = self._mcp_tool.input_schema.get("required", [])
54
-
55
- # Convert JSON schema properties to Pydantic fields
56
- fields = {}
57
- for prop_name, prop_schema in properties.items():
58
- field_type = self._json_schema_to_python_type(prop_schema)
59
- field_description = prop_schema.get("description", "")
60
-
61
- if prop_name in required_fields:
62
- fields[prop_name] = (
63
- field_type,
64
- Field(description=field_description),
65
- )
66
- else:
67
- fields[prop_name] = (
68
- field_type,
69
- Field(default=None, description=field_description),
70
- )
71
-
72
- # Create dynamic model
73
- return create_model(f"{self.name}Parameters", **fields)
74
-
75
54
  def _json_schema_to_python_type(self, schema: Dict[str, Any]) -> type:
76
55
  """Convert JSON schema type to Python type"""
77
56
  json_type = schema.get("type", "string")
@@ -13,6 +13,8 @@ from unique_toolkit.agentic.tools.config import (
13
13
  )
14
14
  from unique_toolkit.agentic.tools.factory import ToolFactory
15
15
  from unique_toolkit.agentic.tools.mcp.manager import MCPManager
16
+ from unique_toolkit.agentic.tools.mcp.models import MCPToolConfig
17
+ from unique_toolkit.agentic.tools.mcp.tool_wrapper import MCPToolWrapper
16
18
  from unique_toolkit.agentic.tools.schemas import BaseToolConfig
17
19
  from unique_toolkit.agentic.tools.tool import Tool
18
20
  from unique_toolkit.agentic.tools.tool_manager import ToolManager, ToolManagerConfig
@@ -114,11 +116,22 @@ class TestMCPManager:
114
116
  name="mcp_test_tool",
115
117
  description="Test MCP tool",
116
118
  input_schema={
119
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
117
120
  "type": "object",
118
121
  "properties": {
119
- "query": {"type": "string", "description": "Search query"}
122
+ "folder": {
123
+ "description": "Mail folder to read mails from",
124
+ "default": "inbox",
125
+ "type": "string",
126
+ },
127
+ "limit": {
128
+ "description": "Number of emails to retrieve",
129
+ "default": 10,
130
+ "type": "number",
131
+ "minimum": 1,
132
+ "maximum": 50,
133
+ },
120
134
  },
121
- "required": ["query"],
122
135
  },
123
136
  output_schema=None,
124
137
  annotations=None,
@@ -446,3 +459,76 @@ class TestMCPManager:
446
459
  assert "internal_search" not in tool_names
447
460
  assert "mcp_test_tool" in tool_names
448
461
  assert len(tools) == 1
462
+
463
+ def test_mcp_tool_wrapper_generates_correct_parameters(
464
+ self, mcp_tools, mcp_servers, tool_progress_reporter
465
+ ):
466
+ """Test that MCPToolWrapper correctly generates parameters field from MCP tool input schema"""
467
+ # Get the first MCP tool and server from fixtures
468
+ mcp_tool = mcp_tools[0]
469
+ mcp_server = mcp_servers[0]
470
+
471
+ # Create MCPToolConfig
472
+ config = MCPToolConfig(
473
+ server_id="test_server_id",
474
+ server_name="test_server",
475
+ mcp_source_id="test_server_id",
476
+ )
477
+
478
+ # Initialize the MCPToolWrapper
479
+ tool_wrapper = MCPToolWrapper(
480
+ mcp_server=mcp_server,
481
+ mcp_tool=mcp_tool,
482
+ config=config,
483
+ event=self.event,
484
+ tool_progress_reporter=tool_progress_reporter,
485
+ )
486
+
487
+ # Call tool_description to get the LanguageModelToolDescription
488
+ tool_description = tool_wrapper.tool_description()
489
+
490
+ # Verify the basic properties
491
+ assert tool_description.name == "mcp_test_tool"
492
+ assert tool_description.description == "Test MCP tool"
493
+
494
+ # Verify that parameters field is correctly set to the input_schema
495
+ expected_parameters = {
496
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
497
+ "type": "object",
498
+ "properties": {
499
+ "folder": {
500
+ "description": "Mail folder to read mails from",
501
+ "default": "inbox",
502
+ "type": "string",
503
+ },
504
+ "limit": {
505
+ "description": "Number of emails to retrieve",
506
+ "default": 10,
507
+ "type": "number",
508
+ "minimum": 1,
509
+ "maximum": 50,
510
+ },
511
+ },
512
+ }
513
+
514
+ assert tool_description.parameters == expected_parameters
515
+
516
+ # Verify specific parameter properties
517
+ parameters = tool_description.parameters
518
+ assert isinstance(parameters, dict)
519
+ assert parameters["type"] == "object"
520
+ assert "properties" in parameters
521
+
522
+ # Check folder parameter
523
+ folder_prop = parameters["properties"]["folder"]
524
+ assert folder_prop["type"] == "string"
525
+ assert folder_prop["description"] == "Mail folder to read mails from"
526
+ assert folder_prop["default"] == "inbox"
527
+
528
+ # Check limit parameter
529
+ limit_prop = parameters["properties"]["limit"]
530
+ assert limit_prop["type"] == "number"
531
+ assert limit_prop["description"] == "Number of emails to retrieve"
532
+ assert limit_prop["default"] == 10
533
+ assert limit_prop["minimum"] == 1
534
+ assert limit_prop["maximum"] == 50
@@ -663,9 +663,10 @@ class LanguageModelToolDescription(BaseModel):
663
663
  ...,
664
664
  description="Description of what the tool is doing the tool",
665
665
  )
666
- parameters: type[BaseModel] = Field(
666
+ parameters: type[BaseModel] | dict[str, Any] = Field(
667
667
  ...,
668
668
  description="Pydantic model for the tool parameters",
669
+ union_mode="left_to_right",
669
670
  )
670
671
 
671
672
  # TODO: This should be default `True` but if this is the case the parameter_model needs to include additional properties
@@ -675,8 +676,10 @@ class LanguageModelToolDescription(BaseModel):
675
676
  )
676
677
 
677
678
  @field_serializer("parameters")
678
- def serialize_parameters(self, parameters: type[BaseModel]):
679
- return parameters.model_json_schema()
679
+ def serialize_parameters(
680
+ self, parameters: type[BaseModel] | dict[str, Any]
681
+ ) -> dict[str, Any]:
682
+ return _parameters_as_json_schema(parameters)
680
683
 
681
684
  @overload
682
685
  def to_openai(
@@ -694,7 +697,7 @@ class LanguageModelToolDescription(BaseModel):
694
697
  function=FunctionDefinition(
695
698
  name=self.name,
696
699
  description=self.description,
697
- parameters=self.parameters.model_json_schema(),
700
+ parameters=_parameters_as_json_schema(self.parameters),
698
701
  strict=self.strict,
699
702
  ),
700
703
  type="function",
@@ -703,7 +706,16 @@ class LanguageModelToolDescription(BaseModel):
703
706
  return FunctionToolParam(
704
707
  type="function",
705
708
  name=self.name,
706
- parameters=self.parameters.model_json_schema(),
709
+ parameters=_parameters_as_json_schema(self.parameters),
707
710
  strict=self.strict,
708
711
  description=self.description,
709
712
  )
713
+
714
+
715
+ def _parameters_as_json_schema(
716
+ parameters: type[BaseModel] | dict[str, Any],
717
+ ) -> dict[str, Any]:
718
+ if isinstance(parameters, dict):
719
+ return parameters
720
+
721
+ return parameters.model_json_schema()
File without changes