T7yrttrd commited on
Commit
b5e2978
·
verified ·
1 Parent(s): 35cbf8b

Update service_executor.py

Browse files
Files changed (1) hide show
  1. service_executor.py +260 -257
service_executor.py CHANGED
@@ -57,260 +57,263 @@ from service_vercel import (
57
  )
58
 
59
  async def execute_tool_call(user_id: str, func_name: str, args: dict) -> str:
60
- if func_name == "teams_list_my_teams":
61
- return await teams_list_my_teams(user_id)
62
- elif func_name == "teams_list_channels":
63
- return await teams_list_channels(user_id, args.get("team_id", ""))
64
- elif func_name == "teams_create_channel":
65
- return await teams_create_channel(user_id, args.get("team_id", ""), args.get("display_name", ""), args.get("description", ""))
66
- elif func_name == "teams_list_channel_messages":
67
- return await teams_list_channel_messages(user_id, args.get("team_id", ""), args.get("channel_id", ""), args.get("top", 10))
68
- elif func_name == "teams_send_channel_message":
69
- return await teams_send_channel_message(user_id, args.get("team_id", ""), args.get("channel_id", ""), args.get("content", ""))
70
- elif func_name == "teams_reply_channel_message":
71
- return await teams_reply_channel_message(user_id, args.get("team_id", ""), args.get("channel_id", ""), args.get("message_id", ""), args.get("content", ""))
72
- elif func_name == "teams_list_chats":
73
- return await teams_list_chats(user_id, args.get("top", 10))
74
- elif func_name == "teams_get_chat_messages":
75
- return await teams_get_chat_messages(user_id, args.get("chat_id", ""), args.get("top", 10))
76
- elif func_name == "teams_send_chat_message":
77
- return await teams_send_chat_message(user_id, args.get("chat_id", ""), args.get("content", ""))
78
- elif func_name == "teams_create_chat":
79
- return await teams_create_chat(user_id, args.get("user_principal_names", ""), args.get("topic"))
80
- elif func_name == "teams_create_online_meeting":
81
- return await teams_create_online_meeting(user_id, args.get("subject", ""), args.get("start_datetime", ""), args.get("end_datetime", ""))
82
- elif func_name == "teams_get_meeting_details":
83
- return await teams_get_meeting_details(user_id, args.get("meeting_id", ""))
84
- elif func_name == "teams_get_meeting_transcripts":
85
- return await teams_get_meeting_transcripts(user_id, args.get("meeting_id", ""))
86
- elif func_name == "teams_get_user_presence":
87
- return await teams_get_user_presence(user_id, args.get("target_user_id"))
88
- elif func_name == "teams_list_team_members":
89
- return await teams_list_team_members(user_id, args.get("team_id", ""))
90
- elif func_name == "teams_add_team_member":
91
- return await teams_add_team_member(user_id, args.get("team_id", ""), args.get("user_id_to_add", ""), args.get("roles", ""))
92
- elif func_name == "teams_api_request":
93
- return await teams_api_request(user_id, args.get("endpoint", ""), args.get("method", "GET"), args.get("body_json"))
94
- elif func_name == "microsoft_search_files":
95
- return await microsoft_search_files(user_id, args.get("query", ""))
96
- elif func_name == "excel_list_worksheets":
97
- return await excel_list_worksheets(user_id, args.get("item_id", ""))
98
- elif func_name == "excel_add_worksheet":
99
- return await excel_add_worksheet(user_id, args.get("item_id", ""), args.get("name", ""))
100
- elif func_name == "excel_get_range":
101
- return await excel_get_range(user_id, args.get("item_id", ""), args.get("worksheet_name", ""), args.get("address", ""))
102
- elif func_name == "excel_update_range":
103
- return await excel_update_range(user_id, args.get("item_id", ""), args.get("worksheet_name", ""), args.get("address", ""), args.get("values_json", "[]"))
104
- elif func_name == "excel_list_tables":
105
- return await excel_list_tables(user_id, args.get("item_id", ""), args.get("worksheet_name"))
106
- elif func_name == "excel_create_table":
107
- return await excel_create_table(user_id, args.get("item_id", ""), args.get("worksheet_name", ""), args.get("address", ""), args.get("has_headers", True))
108
- elif func_name == "excel_add_table_row":
109
- return await excel_add_table_row(user_id, args.get("item_id", ""), args.get("table_name_or_id", ""), args.get("values_json", "[]"))
110
- elif func_name == "excel_create_chart":
111
- return await excel_create_chart(user_id, args.get("item_id", ""), args.get("worksheet_name", ""), args.get("chart_type", "ColumnClustered"), args.get("source_data_address", ""), args.get("series_by", "Auto"))
112
- elif func_name == "word_create_document":
113
- return await word_create_document(user_id, args.get("file_name", ""), args.get("initial_text", ""), args.get("folder_id", "root"))
114
- elif func_name == "word_read_document_text":
115
- return await word_read_document_text(user_id, args.get("item_id", ""))
116
- elif func_name == "word_append_text":
117
- return await word_append_text(user_id, args.get("item_id", ""), args.get("text", ""), args.get("heading_level", 0))
118
- elif func_name == "word_find_and_replace":
119
- return await word_find_and_replace(user_id, args.get("item_id", ""), args.get("find_text", ""), args.get("replace_text", ""))
120
- elif func_name == "word_convert_to_pdf":
121
- return await word_convert_to_pdf(user_id, args.get("item_id", ""))
122
- elif func_name == "powerpoint_create_presentation":
123
- return await powerpoint_create_presentation(user_id, args.get("file_name", ""), args.get("title", ""), args.get("folder_id", "root"))
124
- elif func_name == "powerpoint_get_presentation_details":
125
- return await powerpoint_get_presentation_details(user_id, args.get("item_id", ""))
126
- elif func_name == "powerpoint_add_slide_content":
127
- return await powerpoint_add_slide_content(user_id, args.get("item_id", ""), args.get("slide_title", ""), args.get("bullet_points_json", "[]"))
128
- elif func_name == "powerpoint_convert_to_pdf":
129
- return await powerpoint_convert_to_pdf(user_id, args.get("item_id", ""))
130
- elif func_name == "gmail_search_emails":
131
- return await gmail_search_emails(user_id, args.get("query", ""), args.get("max_results", 5))
132
- elif func_name == "gmail_get_email_detail":
133
- return await gmail_get_email_detail(user_id, args.get("message_id", ""))
134
- elif func_name == "gmail_create_draft":
135
- return await gmail_create_draft(user_id, args.get("to", ""), args.get("subject", ""), args.get("body", ""))
136
- elif func_name == "gmail_update_draft":
137
- return await gmail_update_draft(user_id, args.get("draft_id", ""), args.get("to"), args.get("subject"), args.get("body"))
138
- elif func_name == "gmail_send_email":
139
- return await gmail_send_email(user_id, args.get("to", ""), args.get("subject", ""), args.get("body", ""))
140
- elif func_name == "gmail_delete_email":
141
- return await gmail_delete_email(user_id, args.get("message_id"), args.get("query"))
142
- elif func_name == "gmail_delete_draft":
143
- return await gmail_delete_draft(user_id, args.get("draft_id"), args.get("query"))
144
- elif func_name == "calendar_list_events":
145
- return await calendar_list_events(user_id, args.get("query", ""), args.get("max_results", 10))
146
- elif func_name == "calendar_create_event":
147
- return await calendar_create_event(user_id, args.get("summary", ""), args.get("start_time", ""), args.get("end_time", ""), args.get("description", ""), args.get("location", ""))
148
- elif func_name == "calendar_update_event":
149
- return await calendar_update_event(user_id, args.get("event_id"), args.get("query"), args.get("summary"), args.get("start_time"), args.get("end_time"), args.get("description"), args.get("location"))
150
- elif func_name == "calendar_delete_event":
151
- return await calendar_delete_event(user_id, args.get("event_id"), args.get("query"))
152
- elif func_name == "drive_search_files":
153
- return await drive_search_files(user_id, args.get("query", ""))
154
- elif func_name == "drive_read_file":
155
- return await drive_read_file(user_id, args.get("file_id", ""))
156
- elif func_name == "drive_create_file":
157
- return await drive_create_file(user_id, args.get("name", ""), args.get("content", ""))
158
- elif func_name == "drive_delete_file":
159
- return await drive_delete_file(user_id, args.get("file_id", ""))
160
- elif func_name == "drive_update_file":
161
- return await drive_update_file(user_id, args.get("file_id", ""), args.get("content", ""))
162
- elif func_name == "notion_search":
163
- return await notion_search(user_id, args.get("query", ""), args.get("max_results", 5))
164
- elif func_name == "notion_get_page_content":
165
- return await notion_get_page_content(user_id, args.get("page_id", ""))
166
- elif func_name == "notion_create_page":
167
- return await notion_create_page(user_id, args.get("parent_id"), args.get("title", "Untitled"), args.get("content", ""))
168
- elif func_name == "notion_update_page":
169
- return await notion_update_page(user_id, args.get("page_id", ""), args.get("title"), args.get("content"), args.get("replace_content", False))
170
- elif func_name == "notion_delete_page":
171
- return await notion_delete_page(user_id, args.get("page_id", ""))
172
- elif func_name == "notion_append_block_children":
173
- return await notion_append_block_children(user_id, args.get("page_id", ""), args.get("content", ""))
174
- elif func_name == "github_list_repos":
175
- return await github_list_repos(user_id, args.get("sort", "updated"), args.get("per_page", 10))
176
- elif func_name == "github_get_repo":
177
- return await github_get_repo(user_id, args.get("owner", ""), args.get("repo", ""))
178
- elif func_name == "github_create_repo":
179
- return await github_create_repo(user_id, args.get("name", ""), args.get("description", ""), args.get("private", False), args.get("auto_init", True))
180
- elif func_name == "github_delete_repo":
181
- return await github_delete_repo(user_id, args.get("owner", ""), args.get("repo", ""))
182
- elif func_name == "github_get_file_contents":
183
- return await github_get_file_contents(user_id, args.get("owner", ""), args.get("repo", ""), args.get("path", ""), args.get("ref"))
184
- elif func_name == "github_create_or_update_file":
185
- return await github_create_or_update_file(user_id, args.get("owner", ""), args.get("repo", ""), args.get("path", ""), args.get("message", ""), args.get("content", ""), args.get("branch"), args.get("sha"))
186
- elif func_name == "github_delete_file":
187
- return await github_delete_file(user_id, args.get("owner", ""), args.get("repo", ""), args.get("path", ""), args.get("message", ""), args.get("sha", ""), args.get("branch"))
188
- elif func_name == "github_list_branches":
189
- return await github_list_branches(user_id, args.get("owner", ""), args.get("repo", ""))
190
- elif func_name == "github_create_branch":
191
- return await github_create_branch(user_id, args.get("owner", ""), args.get("repo", ""), args.get("branch", ""), args.get("from_branch"))
192
- elif func_name == "github_list_commits":
193
- return await github_list_commits(user_id, args.get("owner", ""), args.get("repo", ""), args.get("branch"), args.get("per_page", 5))
194
- elif func_name == "github_list_pull_requests":
195
- return await github_list_pull_requests(user_id, args.get("owner", ""), args.get("repo", ""))
196
- elif func_name == "github_create_pull_request":
197
- return await github_create_pull_request(user_id, args.get("owner", ""), args.get("repo", ""), args.get("title", ""), args.get("head", ""), args.get("base", "main"), args.get("body", ""))
198
- elif func_name == "github_merge_pull_request":
199
- return await github_merge_pull_request(user_id, args.get("owner", ""), args.get("repo", ""), args.get("pull_number", 0), args.get("commit_title"), args.get("merge_method", "merge"))
200
- elif func_name == "github_list_issues":
201
- return await github_list_issues(user_id, args.get("owner", ""), args.get("repo", ""))
202
- elif func_name == "github_create_issue":
203
- return await github_create_issue(user_id, args.get("owner", ""), args.get("repo", ""), args.get("title", ""), args.get("body", ""))
204
- elif func_name == "github_add_issue_comment":
205
- return await github_add_issue_comment(user_id, args.get("owner", ""), args.get("repo", ""), args.get("issue_number", 0), args.get("body", ""))
206
- elif func_name == "github_search":
207
- return await github_search(user_id, args.get("type", "repositories"), args.get("query", ""))
208
- elif func_name == "github_api_request":
209
- return await github_api_request(user_id, args.get("endpoint", ""), args.get("method", "GET"), args.get("body_json"))
210
- elif func_name == "figma_get_file":
211
- return await figma_get_file(user_id, args.get("file_key", ""), args.get("depth", 2))
212
- elif func_name == "figma_get_file_nodes":
213
- return await figma_get_file_nodes(user_id, args.get("file_key", ""), args.get("node_ids", ""))
214
- elif func_name == "figma_get_images":
215
- return await figma_get_images(user_id, args.get("file_key", ""), args.get("node_ids", ""), args.get("format", "png"), args.get("scale", 2.0))
216
- elif func_name == "figma_get_comments":
217
- return await figma_get_comments(user_id, args.get("file_key", ""))
218
- elif func_name == "figma_post_comment":
219
- return await figma_post_comment(user_id, args.get("file_key", ""), args.get("message", ""), args.get("node_id"))
220
- elif func_name == "canva_search_designs":
221
- return await canva_search_designs(user_id, args.get("query", ""), args.get("limit", 10), args.get("ownership", "any"), args.get("sort_by", "relevance"))
222
- elif func_name == "canva_get_design":
223
- return await canva_get_design(user_id, args.get("design_id", ""))
224
- elif func_name == "canva_get_design_pages":
225
- return await canva_get_design_pages(user_id, args.get("design_id", ""), args.get("limit", 50), args.get("offset", 1))
226
- elif func_name == "canva_create_design":
227
- return await canva_create_design(user_id, args.get("title", "Untitled"), args.get("design_type", "presentation"), args.get("width"), args.get("height"), args.get("asset_id"))
228
- elif func_name == "canva_export_design":
229
- return await canva_export_design(user_id, args.get("design_id", ""), args.get("format_type", "pdf"), args.get("quality", "regular"))
230
- elif func_name == "canva_get_export_status":
231
- return await canva_get_export_status(user_id, args.get("export_id", ""))
232
- elif func_name == "canva_upload_asset_from_url":
233
- return await canva_upload_asset_from_url(user_id, args.get("name", ""), args.get("url", ""))
234
- elif func_name == "canva_search_brand_templates":
235
- return await canva_search_brand_templates(user_id, args.get("query", ""), args.get("dataset", "any"))
236
- elif func_name == "canva_get_brand_template_dataset":
237
- return await canva_get_brand_template_dataset(user_id, args.get("template_id", ""))
238
- elif func_name == "canva_autofill_design":
239
- return await canva_autofill_design(user_id, args.get("brand_template_id", ""), args.get("data_json", "{}"), args.get("title"))
240
- elif func_name == "canva_search_folders":
241
- return await canva_search_folders(user_id, args.get("query", ""), args.get("limit", 10))
242
- elif func_name == "canva_list_folder_items":
243
- return await canva_list_folder_items(user_id, args.get("folder_id", "root"), args.get("item_types"))
244
- elif func_name == "canva_create_folder":
245
- return await canva_create_folder(user_id, args.get("name", ""), args.get("parent_folder_id", "root"))
246
- elif func_name == "canva_move_item_to_folder":
247
- return await canva_move_item_to_folder(user_id, args.get("item_id", ""), args.get("to_folder_id", "root"))
248
- elif func_name == "canva_list_comments":
249
- return await canva_list_comments(user_id, args.get("design_id", ""))
250
- elif func_name == "canva_comment_on_design":
251
- return await canva_comment_on_design(user_id, args.get("design_id", ""), args.get("message_plaintext", ""))
252
- elif func_name == "canva_list_replies":
253
- return await canva_list_replies(user_id, args.get("design_id", ""), args.get("comment_id", ""))
254
- elif func_name == "canva_reply_to_comment":
255
- return await canva_reply_to_comment(user_id, args.get("design_id", ""), args.get("comment_id", ""), args.get("message_plaintext", ""))
256
- elif func_name == "canva_get_user_profile":
257
- return await canva_get_user_profile(user_id)
258
- elif func_name == "canva_api_request":
259
- return await canva_api_request(user_id, args.get("endpoint", ""), args.get("method", "GET"), args.get("body_json"))
260
- elif func_name == "vercel_search_documentation":
261
- return await vercel_search_documentation(user_id, args.get("query", ""))
262
- elif func_name == "vercel_list_projects":
263
- return await vercel_list_projects(user_id, args.get("limit", 20), args.get("search"), args.get("team_id"))
264
- elif func_name == "vercel_get_project":
265
- return await vercel_get_project(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
266
- elif func_name == "vercel_create_project":
267
- return await vercel_create_project(user_id, args.get("name", ""), args.get("framework"), args.get("build_command"), args.get("output_directory"), args.get("root_directory"), args.get("team_id"))
268
- elif func_name == "vercel_update_project":
269
- return await vercel_update_project(user_id, args.get("project_id_or_name", ""), args.get("framework"), args.get("node_version"), args.get("build_command"), args.get("output_directory"), args.get("root_directory"), args.get("team_id"))
270
- elif func_name == "vercel_delete_project":
271
- return await vercel_delete_project(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
272
- elif func_name == "vercel_pause_project":
273
- return await vercel_pause_project(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
274
- elif func_name == "vercel_unpause_project":
275
- return await vercel_unpause_project(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
276
- elif func_name == "vercel_list_deployments":
277
- return await vercel_list_deployments(user_id, args.get("project_id_or_name"), args.get("limit", 10), args.get("state"), args.get("target"), args.get("team_id"))
278
- elif func_name == "vercel_get_deployment":
279
- return await vercel_get_deployment(user_id, args.get("deployment_id_or_url", ""), args.get("team_id"))
280
- elif func_name == "vercel_get_deployment_events":
281
- return await vercel_get_deployment_events(user_id, args.get("deployment_id", ""), args.get("limit", 50), args.get("team_id"))
282
- elif func_name == "vercel_create_deployment":
283
- return await vercel_create_deployment(user_id, args.get("name", ""), args.get("git_source_json"), args.get("target", "production"), args.get("team_id"))
284
- elif func_name == "vercel_cancel_deployment":
285
- return await vercel_cancel_deployment(user_id, args.get("deployment_id", ""), args.get("team_id"))
286
- elif func_name == "vercel_delete_deployment":
287
- return await vercel_delete_deployment(user_id, args.get("deployment_id", ""), args.get("team_id"))
288
- elif func_name == "vercel_list_env_variables":
289
- return await vercel_list_env_variables(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
290
- elif func_name == "vercel_create_env_variable":
291
- return await vercel_create_env_variable(user_id, args.get("project_id_or_name", ""), args.get("key", ""), args.get("value", ""), args.get("target", "production,preview,development"), args.get("type", "encrypted"), args.get("team_id"))
292
- elif func_name == "vercel_update_env_variable":
293
- return await vercel_update_env_variable(user_id, args.get("project_id_or_name", ""), args.get("env_id", ""), args.get("value", ""), args.get("target"), args.get("team_id"))
294
- elif func_name == "vercel_delete_env_variable":
295
- return await vercel_delete_env_variable(user_id, args.get("project_id_or_name", ""), args.get("env_id", ""), args.get("team_id"))
296
- elif func_name == "vercel_list_domains":
297
- return await vercel_list_domains(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
298
- elif func_name == "vercel_add_domain":
299
- return await vercel_add_domain(user_id, args.get("project_id_or_name", ""), args.get("domain", ""), args.get("redirect"), args.get("team_id"))
300
- elif func_name == "vercel_verify_domain":
301
- return await vercel_verify_domain(user_id, args.get("project_id_or_name", ""), args.get("domain", ""), args.get("team_id"))
302
- elif func_name == "vercel_remove_domain":
303
- return await vercel_remove_domain(user_id, args.get("project_id_or_name", ""), args.get("domain", ""), args.get("team_id"))
304
- elif func_name == "vercel_list_aliases":
305
- return await vercel_list_aliases(user_id, args.get("project_id"), args.get("limit", 20), args.get("team_id"))
306
- elif func_name == "vercel_assign_alias":
307
- return await vercel_assign_alias(user_id, args.get("deployment_id", ""), args.get("alias", ""), args.get("team_id"))
308
- elif func_name == "vercel_list_teams":
309
- return await vercel_list_teams(user_id, args.get("limit", 20))
310
- elif func_name == "vercel_get_team":
311
- return await vercel_get_team(user_id, args.get("team_id", ""))
312
- elif func_name == "vercel_get_user":
313
- return await vercel_get_user(user_id)
314
- elif func_name == "vercel_api_request":
315
- return await vercel_api_request(user_id, args.get("endpoint", ""), args.get("method", "GET"), args.get("body_json"), args.get("team_id"))
316
- return "Unknown tool function."
 
 
 
 
57
  )
58
 
59
  async def execute_tool_call(user_id: str, func_name: str, args: dict) -> str:
60
+ try:
61
+ if func_name == "teams_list_my_teams":
62
+ return await teams_list_my_teams(user_id)
63
+ elif func_name == "teams_list_channels":
64
+ return await teams_list_channels(user_id, args.get("team_id", ""))
65
+ elif func_name == "teams_create_channel":
66
+ return await teams_create_channel(user_id, args.get("team_id", ""), args.get("display_name", ""), args.get("description", ""))
67
+ elif func_name == "teams_list_channel_messages":
68
+ return await teams_list_channel_messages(user_id, args.get("team_id", ""), args.get("channel_id", ""), int(args.get("top", 10)))
69
+ elif func_name == "teams_send_channel_message":
70
+ return await teams_send_channel_message(user_id, args.get("team_id", ""), args.get("channel_id", ""), args.get("content", ""))
71
+ elif func_name == "teams_reply_channel_message":
72
+ return await teams_reply_channel_message(user_id, args.get("team_id", ""), args.get("channel_id", ""), args.get("message_id", ""), args.get("content", ""))
73
+ elif func_name == "teams_list_chats":
74
+ return await teams_list_chats(user_id, int(args.get("top", 10)))
75
+ elif func_name == "teams_get_chat_messages":
76
+ return await teams_get_chat_messages(user_id, args.get("chat_id", ""), int(args.get("top", 10)))
77
+ elif func_name == "teams_send_chat_message":
78
+ return await teams_send_chat_message(user_id, args.get("chat_id", ""), args.get("content", ""))
79
+ elif func_name == "teams_create_chat":
80
+ return await teams_create_chat(user_id, args.get("user_principal_names", ""), args.get("topic"))
81
+ elif func_name == "teams_create_online_meeting":
82
+ return await teams_create_online_meeting(user_id, args.get("subject", ""), args.get("start_datetime", ""), args.get("end_datetime", ""))
83
+ elif func_name == "teams_get_meeting_details":
84
+ return await teams_get_meeting_details(user_id, args.get("meeting_id", ""))
85
+ elif func_name == "teams_get_meeting_transcripts":
86
+ return await teams_get_meeting_transcripts(user_id, args.get("meeting_id", ""))
87
+ elif func_name == "teams_get_user_presence":
88
+ return await teams_get_user_presence(user_id, args.get("target_user_id"))
89
+ elif func_name == "teams_list_team_members":
90
+ return await teams_list_team_members(user_id, args.get("team_id", ""))
91
+ elif func_name == "teams_add_team_member":
92
+ return await teams_add_team_member(user_id, args.get("team_id", ""), args.get("user_id_to_add", ""), args.get("roles", ""))
93
+ elif func_name == "teams_api_request":
94
+ return await teams_api_request(user_id, args.get("endpoint", ""), args.get("method", "GET"), args.get("body_json"))
95
+ elif func_name == "microsoft_search_files":
96
+ return await microsoft_search_files(user_id, args.get("query", ""))
97
+ elif func_name == "excel_list_worksheets":
98
+ return await excel_list_worksheets(user_id, args.get("item_id", ""))
99
+ elif func_name == "excel_add_worksheet":
100
+ return await excel_add_worksheet(user_id, args.get("item_id", ""), args.get("name", ""))
101
+ elif func_name == "excel_get_range":
102
+ return await excel_get_range(user_id, args.get("item_id", ""), args.get("worksheet_name", ""), args.get("address", ""))
103
+ elif func_name == "excel_update_range":
104
+ return await excel_update_range(user_id, args.get("item_id", ""), args.get("worksheet_name", ""), args.get("address", ""), args.get("values_json", "[]"))
105
+ elif func_name == "excel_list_tables":
106
+ return await excel_list_tables(user_id, args.get("item_id", ""), args.get("worksheet_name"))
107
+ elif func_name == "excel_create_table":
108
+ return await excel_create_table(user_id, args.get("item_id", ""), args.get("worksheet_name", ""), args.get("address", ""), args.get("has_headers", True))
109
+ elif func_name == "excel_add_table_row":
110
+ return await excel_add_table_row(user_id, args.get("item_id", ""), args.get("table_name_or_id", ""), args.get("values_json", "[]"))
111
+ elif func_name == "excel_create_chart":
112
+ return await excel_create_chart(user_id, args.get("item_id", ""), args.get("worksheet_name", ""), args.get("chart_type", "ColumnClustered"), args.get("source_data_address", ""), args.get("series_by", "Auto"))
113
+ elif func_name == "word_create_document":
114
+ return await word_create_document(user_id, args.get("file_name", ""), args.get("initial_text", ""), args.get("folder_id", "root"))
115
+ elif func_name == "word_read_document_text":
116
+ return await word_read_document_text(user_id, args.get("item_id", ""))
117
+ elif func_name == "word_append_text":
118
+ return await word_append_text(user_id, args.get("item_id", ""), args.get("text", ""), int(args.get("heading_level", 0)))
119
+ elif func_name == "word_find_and_replace":
120
+ return await word_find_and_replace(user_id, args.get("item_id", ""), args.get("find_text", ""), args.get("replace_text", ""))
121
+ elif func_name == "word_convert_to_pdf":
122
+ return await word_convert_to_pdf(user_id, args.get("item_id", ""))
123
+ elif func_name == "powerpoint_create_presentation":
124
+ return await powerpoint_create_presentation(user_id, args.get("file_name", ""), args.get("title", ""), args.get("folder_id", "root"))
125
+ elif func_name == "powerpoint_get_presentation_details":
126
+ return await powerpoint_get_presentation_details(user_id, args.get("item_id", ""))
127
+ elif func_name == "powerpoint_add_slide_content":
128
+ return await powerpoint_add_slide_content(user_id, args.get("item_id", ""), args.get("slide_title", ""), args.get("bullet_points_json", "[]"))
129
+ elif func_name == "powerpoint_convert_to_pdf":
130
+ return await powerpoint_convert_to_pdf(user_id, args.get("item_id", ""))
131
+ elif func_name == "gmail_search_emails":
132
+ return await gmail_search_emails(user_id, args.get("query", ""), int(args.get("max_results", 5)))
133
+ elif func_name == "gmail_get_email_detail":
134
+ return await gmail_get_email_detail(user_id, args.get("message_id", ""))
135
+ elif func_name == "gmail_create_draft":
136
+ return await gmail_create_draft(user_id, args.get("to", ""), args.get("subject", ""), args.get("body", ""))
137
+ elif func_name == "gmail_update_draft":
138
+ return await gmail_update_draft(user_id, args.get("draft_id", ""), args.get("to"), args.get("subject"), args.get("body"))
139
+ elif func_name == "gmail_send_email":
140
+ return await gmail_send_email(user_id, args.get("to", ""), args.get("subject", ""), args.get("body", ""))
141
+ elif func_name == "gmail_delete_email":
142
+ return await gmail_delete_email(user_id, args.get("message_id"), args.get("query"))
143
+ elif func_name == "gmail_delete_draft":
144
+ return await gmail_delete_draft(user_id, args.get("draft_id"), args.get("query"))
145
+ elif func_name == "calendar_list_events":
146
+ return await calendar_list_events(user_id, args.get("query", ""), int(args.get("max_results", 10)))
147
+ elif func_name == "calendar_create_event":
148
+ return await calendar_create_event(user_id, args.get("summary", ""), args.get("start_time", ""), args.get("end_time", ""), args.get("description", ""), args.get("location", ""))
149
+ elif func_name == "calendar_update_event":
150
+ return await calendar_update_event(user_id, args.get("event_id"), args.get("query"), args.get("summary"), args.get("start_time"), args.get("end_time"), args.get("description"), args.get("location"))
151
+ elif func_name == "calendar_delete_event":
152
+ return await calendar_delete_event(user_id, args.get("event_id"), args.get("query"))
153
+ elif func_name == "drive_search_files":
154
+ return await drive_search_files(user_id, args.get("query", ""))
155
+ elif func_name == "drive_read_file":
156
+ return await drive_read_file(user_id, args.get("file_id", ""))
157
+ elif func_name == "drive_create_file":
158
+ return await drive_create_file(user_id, args.get("name", ""), args.get("content", ""))
159
+ elif func_name == "drive_delete_file":
160
+ return await drive_delete_file(user_id, args.get("file_id", ""))
161
+ elif func_name == "drive_update_file":
162
+ return await drive_update_file(user_id, args.get("file_id", ""), args.get("content", ""))
163
+ elif func_name == "notion_search":
164
+ return await notion_search(user_id, args.get("query", ""), int(args.get("max_results", 5)))
165
+ elif func_name == "notion_get_page_content":
166
+ return await notion_get_page_content(user_id, args.get("page_id", ""))
167
+ elif func_name == "notion_create_page":
168
+ return await notion_create_page(user_id, args.get("parent_id"), args.get("title", "Untitled"), args.get("content", ""))
169
+ elif func_name == "notion_update_page":
170
+ return await notion_update_page(user_id, args.get("page_id", ""), args.get("title"), args.get("content"), args.get("replace_content", False))
171
+ elif func_name == "notion_delete_page":
172
+ return await notion_delete_page(user_id, args.get("page_id", ""))
173
+ elif func_name == "notion_append_block_children":
174
+ return await notion_append_block_children(user_id, args.get("page_id", ""), args.get("content", ""))
175
+ elif func_name == "github_list_repos":
176
+ return await github_list_repos(user_id, args.get("sort", "updated"), int(args.get("per_page", 10)))
177
+ elif func_name == "github_get_repo":
178
+ return await github_get_repo(user_id, args.get("owner", ""), args.get("repo", ""))
179
+ elif func_name == "github_create_repo":
180
+ return await github_create_repo(user_id, args.get("name", ""), args.get("description", ""), args.get("private", False), args.get("auto_init", True))
181
+ elif func_name == "github_delete_repo":
182
+ return await github_delete_repo(user_id, args.get("owner", ""), args.get("repo", ""))
183
+ elif func_name == "github_get_file_contents":
184
+ return await github_get_file_contents(user_id, args.get("owner", ""), args.get("repo", ""), args.get("path", ""), args.get("ref"))
185
+ elif func_name == "github_create_or_update_file":
186
+ return await github_create_or_update_file(user_id, args.get("owner", ""), args.get("repo", ""), args.get("path", ""), args.get("message", ""), args.get("content", ""), args.get("branch"), args.get("sha"))
187
+ elif func_name == "github_delete_file":
188
+ return await github_delete_file(user_id, args.get("owner", ""), args.get("repo", ""), args.get("path", ""), args.get("message", ""), args.get("sha", ""), args.get("branch"))
189
+ elif func_name == "github_list_branches":
190
+ return await github_list_branches(user_id, args.get("owner", ""), args.get("repo", ""))
191
+ elif func_name == "github_create_branch":
192
+ return await github_create_branch(user_id, args.get("owner", ""), args.get("repo", ""), args.get("branch", ""), args.get("from_branch"))
193
+ elif func_name == "github_list_commits":
194
+ return await github_list_commits(user_id, args.get("owner", ""), args.get("repo", ""), args.get("branch"), int(args.get("per_page", 5)))
195
+ elif func_name == "github_list_pull_requests":
196
+ return await github_list_pull_requests(user_id, args.get("owner", ""), args.get("repo", ""), args.get("state", "open"))
197
+ elif func_name == "github_create_pull_request":
198
+ return await github_create_pull_request(user_id, args.get("owner", ""), args.get("repo", ""), args.get("title", ""), args.get("head", ""), args.get("base", "main"), args.get("body", ""))
199
+ elif func_name == "github_merge_pull_request":
200
+ return await github_merge_pull_request(user_id, args.get("owner", ""), args.get("repo", ""), int(args.get("pull_number", 0)), args.get("commit_title"), args.get("merge_method", "merge"))
201
+ elif func_name == "github_list_issues":
202
+ return await github_list_issues(user_id, args.get("owner", ""), args.get("repo", ""), args.get("state", "open"))
203
+ elif func_name == "github_create_issue":
204
+ return await github_create_issue(user_id, args.get("owner", ""), args.get("repo", ""), args.get("title", ""), args.get("body", ""))
205
+ elif func_name == "github_add_issue_comment":
206
+ return await github_add_issue_comment(user_id, args.get("owner", ""), args.get("repo", ""), int(args.get("issue_number", 0)), args.get("body", ""))
207
+ elif func_name == "github_search":
208
+ return await github_search(user_id, args.get("type", "repositories"), args.get("query", ""))
209
+ elif func_name == "github_api_request":
210
+ return await github_api_request(user_id, args.get("endpoint", ""), args.get("method", "GET"), args.get("body_json"))
211
+ elif func_name == "figma_get_file":
212
+ return await figma_get_file(user_id, args.get("file_key", ""), int(args.get("depth", 2)))
213
+ elif func_name == "figma_get_file_nodes":
214
+ return await figma_get_file_nodes(user_id, args.get("file_key", ""), args.get("node_ids", ""))
215
+ elif func_name == "figma_get_images":
216
+ return await figma_get_images(user_id, args.get("file_key", ""), args.get("node_ids", ""), args.get("format", "png"), float(args.get("scale", 2.0)))
217
+ elif func_name == "figma_get_comments":
218
+ return await figma_get_comments(user_id, args.get("file_key", ""))
219
+ elif func_name == "figma_post_comment":
220
+ return await figma_post_comment(user_id, args.get("file_key", ""), args.get("message", ""), args.get("node_id"))
221
+ elif func_name == "canva_search_designs":
222
+ return await canva_search_designs(user_id, args.get("query", ""), int(args.get("limit", 10)), args.get("ownership", "any"), args.get("sort_by", "relevance"))
223
+ elif func_name == "canva_get_design":
224
+ return await canva_get_design(user_id, args.get("design_id", ""))
225
+ elif func_name == "canva_get_design_pages":
226
+ return await canva_get_design_pages(user_id, args.get("design_id", ""), int(args.get("limit", 50)), int(args.get("offset", 1)))
227
+ elif func_name == "canva_create_design":
228
+ return await canva_create_design(user_id, args.get("title", "Untitled"), args.get("design_type", "presentation"), args.get("width"), args.get("height"), args.get("asset_id"))
229
+ elif func_name == "canva_export_design":
230
+ return await canva_export_design(user_id, args.get("design_id", ""), args.get("format_type", "pdf"), args.get("quality", "regular"))
231
+ elif func_name == "canva_get_export_status":
232
+ return await canva_get_export_status(user_id, args.get("export_id", ""))
233
+ elif func_name == "canva_upload_asset_from_url":
234
+ return await canva_upload_asset_from_url(user_id, args.get("name", ""), args.get("url", ""))
235
+ elif func_name == "canva_search_brand_templates":
236
+ return await canva_search_brand_templates(user_id, args.get("query", ""), args.get("dataset", "any"))
237
+ elif func_name == "canva_get_brand_template_dataset":
238
+ return await canva_get_brand_template_dataset(user_id, args.get("template_id", ""))
239
+ elif func_name == "canva_autofill_design":
240
+ return await canva_autofill_design(user_id, args.get("brand_template_id", ""), args.get("data_json", "{}"), args.get("title"))
241
+ elif func_name == "canva_search_folders":
242
+ return await canva_search_folders(user_id, args.get("query", ""), int(args.get("limit", 10)))
243
+ elif func_name == "canva_list_folder_items":
244
+ return await canva_list_folder_items(user_id, args.get("folder_id", "root"), args.get("item_types"))
245
+ elif func_name == "canva_create_folder":
246
+ return await canva_create_folder(user_id, args.get("name", ""), args.get("parent_folder_id", "root"))
247
+ elif func_name == "canva_move_item_to_folder":
248
+ return await canva_move_item_to_folder(user_id, args.get("item_id", ""), args.get("to_folder_id", "root"))
249
+ elif func_name == "canva_list_comments":
250
+ return await canva_list_comments(user_id, args.get("design_id", ""))
251
+ elif func_name == "canva_comment_on_design":
252
+ return await canva_comment_on_design(user_id, args.get("design_id", ""), args.get("message_plaintext", ""))
253
+ elif func_name == "canva_list_replies":
254
+ return await canva_list_replies(user_id, args.get("design_id", ""), args.get("comment_id", ""))
255
+ elif func_name == "canva_reply_to_comment":
256
+ return await canva_reply_to_comment(user_id, args.get("design_id", ""), args.get("comment_id", ""), args.get("message_plaintext", ""))
257
+ elif func_name == "canva_get_user_profile":
258
+ return await canva_get_user_profile(user_id)
259
+ elif func_name == "canva_api_request":
260
+ return await canva_api_request(user_id, args.get("endpoint", ""), args.get("method", "GET"), args.get("body_json"))
261
+ elif func_name == "vercel_search_documentation":
262
+ return await vercel_search_documentation(user_id, args.get("query", ""))
263
+ elif func_name == "vercel_list_projects":
264
+ return await vercel_list_projects(user_id, int(args.get("limit", 20)), args.get("search"), args.get("team_id"))
265
+ elif func_name == "vercel_get_project":
266
+ return await vercel_get_project(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
267
+ elif func_name == "vercel_create_project":
268
+ return await vercel_create_project(user_id, args.get("name", ""), args.get("framework"), args.get("build_command"), args.get("output_directory"), args.get("root_directory"), args.get("team_id"))
269
+ elif func_name == "vercel_update_project":
270
+ return await vercel_update_project(user_id, args.get("project_id_or_name", ""), args.get("framework"), args.get("node_version"), args.get("build_command"), args.get("output_directory"), args.get("root_directory"), args.get("team_id"))
271
+ elif func_name == "vercel_delete_project":
272
+ return await vercel_delete_project(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
273
+ elif func_name == "vercel_pause_project":
274
+ return await vercel_pause_project(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
275
+ elif func_name == "vercel_unpause_project":
276
+ return await vercel_unpause_project(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
277
+ elif func_name == "vercel_list_deployments":
278
+ return await vercel_list_deployments(user_id, args.get("project_id_or_name"), int(args.get("limit", 10)), args.get("state"), args.get("target"), args.get("team_id"))
279
+ elif func_name == "vercel_get_deployment":
280
+ return await vercel_get_deployment(user_id, args.get("deployment_id_or_url", ""), args.get("team_id"))
281
+ elif func_name == "vercel_get_deployment_events":
282
+ return await vercel_get_deployment_events(user_id, args.get("deployment_id", ""), int(args.get("limit", 50)), args.get("team_id"))
283
+ elif func_name == "vercel_create_deployment":
284
+ return await vercel_create_deployment(user_id, args.get("name", ""), args.get("git_source_json"), args.get("target", "production"), args.get("team_id"))
285
+ elif func_name == "vercel_cancel_deployment":
286
+ return await vercel_cancel_deployment(user_id, args.get("deployment_id", ""), args.get("team_id"))
287
+ elif func_name == "vercel_delete_deployment":
288
+ return await vercel_delete_deployment(user_id, args.get("deployment_id", ""), args.get("team_id"))
289
+ elif func_name == "vercel_list_env_variables":
290
+ return await vercel_list_env_variables(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
291
+ elif func_name == "vercel_create_env_variable":
292
+ return await vercel_create_env_variable(user_id, args.get("project_id_or_name", ""), args.get("key", ""), args.get("value", ""), args.get("target", "production,preview,development"), args.get("type", "encrypted"), args.get("team_id"))
293
+ elif func_name == "vercel_update_env_variable":
294
+ return await vercel_update_env_variable(user_id, args.get("project_id_or_name", ""), args.get("env_id", ""), args.get("value", ""), args.get("target"), args.get("team_id"))
295
+ elif func_name == "vercel_delete_env_variable":
296
+ return await vercel_delete_env_variable(user_id, args.get("project_id_or_name", ""), args.get("env_id", ""), args.get("team_id"))
297
+ elif func_name == "vercel_list_domains":
298
+ return await vercel_list_domains(user_id, args.get("project_id_or_name", ""), args.get("team_id"))
299
+ elif func_name == "vercel_add_domain":
300
+ return await vercel_add_domain(user_id, args.get("project_id_or_name", ""), args.get("domain", ""), args.get("redirect"), args.get("team_id"))
301
+ elif func_name == "vercel_verify_domain":
302
+ return await vercel_verify_domain(user_id, args.get("project_id_or_name", ""), args.get("domain", ""), args.get("team_id"))
303
+ elif func_name == "vercel_remove_domain":
304
+ return await vercel_remove_domain(user_id, args.get("project_id_or_name", ""), args.get("domain", ""), args.get("team_id"))
305
+ elif func_name == "vercel_list_aliases":
306
+ return await vercel_list_aliases(user_id, args.get("project_id"), int(args.get("limit", 20)), args.get("team_id"))
307
+ elif func_name == "vercel_assign_alias":
308
+ return await vercel_assign_alias(user_id, args.get("deployment_id", ""), args.get("alias", ""), args.get("team_id"))
309
+ elif func_name == "vercel_list_teams":
310
+ return await vercel_list_teams(user_id, int(args.get("limit", 20)))
311
+ elif func_name == "vercel_get_team":
312
+ return await vercel_get_team(user_id, args.get("team_id", ""))
313
+ elif func_name == "vercel_get_user":
314
+ return await vercel_get_user(user_id)
315
+ elif func_name == "vercel_api_request":
316
+ return await vercel_api_request(user_id, args.get("endpoint", ""), args.get("method", "GET"), args.get("body_json"), args.get("team_id"))
317
+ return f"Unknown tool function: {func_name}"
318
+ except Exception as e:
319
+ return f"Execution error in {func_name}: {str(e)}"