@@ -18,21 +18,24 @@ class Tool
1818
1919 // Original constructor (backward compatible)
2020 Tool (std::string name, fastmcpp::Json input_schema, fastmcpp::Json output_schema, Fn fn,
21- std::vector<std::string> exclude_args = {})
21+ std::vector<std::string> exclude_args = {},
22+ fastmcpp::TaskSupport task_support = fastmcpp::TaskSupport::Forbidden)
2223 : name_(std::move(name)), input_schema_(std::move(input_schema)),
2324 output_schema_(std::move(output_schema)), fn_(std::move(fn)),
24- exclude_args_(std::move(exclude_args))
25+ exclude_args_(std::move(exclude_args)), task_support_(task_support)
2526 {
2627 }
2728
2829 // Extended constructor with title, description, icons
2930 Tool (std::string name, fastmcpp::Json input_schema, fastmcpp::Json output_schema, Fn fn,
3031 std::optional<std::string> title, std::optional<std::string> description,
3132 std::optional<std::vector<fastmcpp::Icon>> icons,
32- std::vector<std::string> exclude_args = {})
33+ std::vector<std::string> exclude_args = {},
34+ fastmcpp::TaskSupport task_support = fastmcpp::TaskSupport::Forbidden)
3335 : name_(std::move(name)), title_(std::move(title)), description_(std::move(description)),
3436 input_schema_(std::move(input_schema)), output_schema_(std::move(output_schema)),
35- icons_(std::move(icons)), fn_(std::move(fn)), exclude_args_(std::move(exclude_args))
37+ icons_(std::move(icons)), fn_(std::move(fn)), exclude_args_(std::move(exclude_args)),
38+ task_support_(task_support)
3639 {
3740 }
3841
@@ -67,6 +70,11 @@ class Tool
6770 return fn_ (input);
6871 }
6972
73+ fastmcpp::TaskSupport task_support () const
74+ {
75+ return task_support_;
76+ }
77+
7078 // Setters for optional fields (builder pattern)
7179 Tool& set_title (std::string title)
7280 {
@@ -83,6 +91,11 @@ class Tool
8391 icons_ = std::move (icons);
8492 return *this ;
8593 }
94+ Tool& set_task_support (fastmcpp::TaskSupport support)
95+ {
96+ task_support_ = support;
97+ return *this ;
98+ }
8699
87100 private:
88101 fastmcpp::Json prune_schema (const fastmcpp::Json& schema) const
@@ -126,6 +139,7 @@ class Tool
126139 std::optional<std::vector<fastmcpp::Icon>> icons_;
127140 Fn fn_;
128141 std::vector<std::string> exclude_args_;
142+ fastmcpp::TaskSupport task_support_{fastmcpp::TaskSupport::Forbidden};
129143};
130144
131145} // namespace fastmcpp::tools
0 commit comments