universal-mcp-applications 0.1.33__py3-none-any.whl → 0.1.39rc16__py3-none-any.whl

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.

Potentially problematic release.


This version of universal-mcp-applications might be problematic. Click here for more details.

Files changed (119) hide show
  1. universal_mcp/applications/BEST_PRACTICES.md +1 -1
  2. universal_mcp/applications/ahrefs/app.py +92 -238
  3. universal_mcp/applications/airtable/app.py +36 -135
  4. universal_mcp/applications/apollo/app.py +124 -477
  5. universal_mcp/applications/asana/app.py +605 -1755
  6. universal_mcp/applications/aws_s3/app.py +63 -119
  7. universal_mcp/applications/bill/app.py +644 -2055
  8. universal_mcp/applications/box/app.py +1246 -4159
  9. universal_mcp/applications/braze/app.py +410 -1476
  10. universal_mcp/applications/browser_use/README.md +15 -1
  11. universal_mcp/applications/browser_use/__init__.py +1 -0
  12. universal_mcp/applications/browser_use/app.py +91 -26
  13. universal_mcp/applications/cal_com_v2/app.py +207 -625
  14. universal_mcp/applications/calendly/app.py +103 -242
  15. universal_mcp/applications/canva/app.py +75 -140
  16. universal_mcp/applications/clickup/app.py +331 -798
  17. universal_mcp/applications/coda/app.py +240 -520
  18. universal_mcp/applications/confluence/app.py +497 -1285
  19. universal_mcp/applications/contentful/app.py +40 -155
  20. universal_mcp/applications/crustdata/app.py +44 -123
  21. universal_mcp/applications/dialpad/app.py +451 -924
  22. universal_mcp/applications/digitalocean/app.py +2071 -6082
  23. universal_mcp/applications/domain_checker/app.py +3 -54
  24. universal_mcp/applications/e2b/app.py +17 -68
  25. universal_mcp/applications/elevenlabs/README.md +27 -3
  26. universal_mcp/applications/elevenlabs/app.py +741 -74
  27. universal_mcp/applications/exa/README.md +8 -4
  28. universal_mcp/applications/exa/app.py +415 -186
  29. universal_mcp/applications/falai/README.md +5 -7
  30. universal_mcp/applications/falai/app.py +156 -232
  31. universal_mcp/applications/figma/app.py +91 -175
  32. universal_mcp/applications/file_system/app.py +2 -13
  33. universal_mcp/applications/firecrawl/app.py +198 -176
  34. universal_mcp/applications/fireflies/app.py +59 -281
  35. universal_mcp/applications/fpl/app.py +92 -529
  36. universal_mcp/applications/fpl/utils/fixtures.py +15 -49
  37. universal_mcp/applications/fpl/utils/helper.py +25 -89
  38. universal_mcp/applications/fpl/utils/league_utils.py +20 -64
  39. universal_mcp/applications/ghost_content/app.py +70 -179
  40. universal_mcp/applications/github/app.py +30 -67
  41. universal_mcp/applications/gong/app.py +142 -302
  42. universal_mcp/applications/google_calendar/app.py +26 -78
  43. universal_mcp/applications/google_docs/README.md +15 -14
  44. universal_mcp/applications/google_docs/app.py +103 -206
  45. universal_mcp/applications/google_drive/app.py +194 -793
  46. universal_mcp/applications/google_gemini/app.py +68 -59
  47. universal_mcp/applications/google_mail/README.md +1 -0
  48. universal_mcp/applications/google_mail/app.py +93 -214
  49. universal_mcp/applications/google_searchconsole/app.py +25 -58
  50. universal_mcp/applications/google_sheet/README.md +2 -1
  51. universal_mcp/applications/google_sheet/app.py +226 -624
  52. universal_mcp/applications/google_sheet/helper.py +26 -53
  53. universal_mcp/applications/hashnode/app.py +57 -269
  54. universal_mcp/applications/heygen/README.md +10 -32
  55. universal_mcp/applications/heygen/app.py +339 -811
  56. universal_mcp/applications/http_tools/app.py +10 -32
  57. universal_mcp/applications/hubspot/README.md +1 -1
  58. universal_mcp/applications/hubspot/app.py +7508 -99
  59. universal_mcp/applications/jira/app.py +2419 -8334
  60. universal_mcp/applications/klaviyo/app.py +739 -1621
  61. universal_mcp/applications/linkedin/README.md +18 -1
  62. universal_mcp/applications/linkedin/app.py +729 -251
  63. universal_mcp/applications/mailchimp/app.py +696 -1851
  64. universal_mcp/applications/markitdown/app.py +8 -20
  65. universal_mcp/applications/miro/app.py +333 -815
  66. universal_mcp/applications/ms_teams/app.py +420 -1407
  67. universal_mcp/applications/neon/app.py +144 -250
  68. universal_mcp/applications/notion/app.py +38 -53
  69. universal_mcp/applications/onedrive/app.py +26 -48
  70. universal_mcp/applications/openai/app.py +43 -166
  71. universal_mcp/applications/outlook/README.md +22 -9
  72. universal_mcp/applications/outlook/app.py +403 -141
  73. universal_mcp/applications/perplexity/README.md +2 -1
  74. universal_mcp/applications/perplexity/app.py +161 -20
  75. universal_mcp/applications/pipedrive/app.py +1021 -3331
  76. universal_mcp/applications/posthog/app.py +272 -541
  77. universal_mcp/applications/reddit/app.py +65 -164
  78. universal_mcp/applications/resend/app.py +72 -139
  79. universal_mcp/applications/retell/app.py +23 -50
  80. universal_mcp/applications/rocketlane/app.py +252 -965
  81. universal_mcp/applications/scraper/app.py +114 -142
  82. universal_mcp/applications/semanticscholar/app.py +36 -78
  83. universal_mcp/applications/semrush/app.py +44 -78
  84. universal_mcp/applications/sendgrid/app.py +826 -1576
  85. universal_mcp/applications/sentry/app.py +444 -1079
  86. universal_mcp/applications/serpapi/app.py +44 -146
  87. universal_mcp/applications/sharepoint/app.py +27 -49
  88. universal_mcp/applications/shopify/app.py +1748 -4486
  89. universal_mcp/applications/shortcut/app.py +275 -536
  90. universal_mcp/applications/slack/app.py +43 -125
  91. universal_mcp/applications/spotify/app.py +206 -405
  92. universal_mcp/applications/supabase/app.py +174 -283
  93. universal_mcp/applications/tavily/app.py +2 -2
  94. universal_mcp/applications/trello/app.py +853 -2816
  95. universal_mcp/applications/twilio/app.py +27 -62
  96. universal_mcp/applications/twitter/api_segments/compliance_api.py +4 -14
  97. universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +6 -18
  98. universal_mcp/applications/twitter/api_segments/likes_api.py +1 -3
  99. universal_mcp/applications/twitter/api_segments/lists_api.py +5 -15
  100. universal_mcp/applications/twitter/api_segments/trends_api.py +1 -3
  101. universal_mcp/applications/twitter/api_segments/tweets_api.py +9 -31
  102. universal_mcp/applications/twitter/api_segments/usage_api.py +1 -5
  103. universal_mcp/applications/twitter/api_segments/users_api.py +14 -42
  104. universal_mcp/applications/whatsapp/app.py +35 -186
  105. universal_mcp/applications/whatsapp/audio.py +2 -6
  106. universal_mcp/applications/whatsapp/whatsapp.py +17 -51
  107. universal_mcp/applications/whatsapp_business/app.py +86 -299
  108. universal_mcp/applications/wrike/app.py +80 -153
  109. universal_mcp/applications/yahoo_finance/app.py +19 -65
  110. universal_mcp/applications/youtube/app.py +120 -306
  111. universal_mcp/applications/zenquotes/app.py +3 -3
  112. {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc16.dist-info}/METADATA +4 -2
  113. {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc16.dist-info}/RECORD +115 -119
  114. {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc16.dist-info}/WHEEL +1 -1
  115. universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
  116. universal_mcp/applications/hubspot/api_segments/api_segment_base.py +0 -54
  117. universal_mcp/applications/hubspot/api_segments/crm_api.py +0 -7337
  118. universal_mcp/applications/hubspot/api_segments/marketing_api.py +0 -1467
  119. {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc16.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,4 @@
1
1
  from typing import Any
2
-
3
2
  from universal_mcp.applications.application import APIApplication
4
3
  from universal_mcp.integrations import Integration
5
4
 
@@ -9,7 +8,7 @@ class RetellApp(APIApplication):
9
8
  super().__init__(name="retell", integration=integration, **kwargs)
10
9
  self.base_url = "https://api.retellai.com"
11
10
 
12
- def get_v2_get_call_by_call_id(self, call_id) -> dict[str, Any]:
11
+ async def get_v2_get_call_by_call_id(self, call_id) -> dict[str, Any]:
13
12
  """
14
13
  Retrieve detailed information about a specific call using its call ID.
15
14
 
@@ -30,17 +29,12 @@ class RetellApp(APIApplication):
30
29
  raise ValueError("Missing required parameter 'call_id'")
31
30
  url = f"{self.base_url}/v2/get-call/{call_id}"
32
31
  query_params = {}
33
- response = self._get(url, params=query_params)
32
+ response = await self._aget(url, params=query_params)
34
33
  response.raise_for_status()
35
34
  return response.json()
36
35
 
37
- def post_v2_create_phone_call(
38
- self,
39
- from_number,
40
- to_number,
41
- override_agent_id=None,
42
- metadata=None,
43
- retell_llm_dynamic_variables=None,
36
+ async def post_v2_create_phone_call(
37
+ self, from_number, to_number, override_agent_id=None, metadata=None, retell_llm_dynamic_variables=None
44
38
  ) -> dict[str, Any]:
45
39
  """
46
40
  Initiates a phone call using a JSON payload with specified parameters.
@@ -75,13 +69,11 @@ class RetellApp(APIApplication):
75
69
  request_body = {k: v for k, v in request_body.items() if v is not None}
76
70
  url = f"{self.base_url}/v2/create-phone-call"
77
71
  query_params = {}
78
- response = self._post(url, data=request_body, params=query_params)
72
+ response = await self._apost(url, data=request_body, params=query_params)
79
73
  response.raise_for_status()
80
74
  return response.json()
81
75
 
82
- def post_v2_create_web_call(
83
- self, agent_id, metadata=None, retell_llm_dynamic_variables=None
84
- ) -> dict[str, Any]:
76
+ async def post_v2_create_web_call(self, agent_id, metadata=None, retell_llm_dynamic_variables=None) -> dict[str, Any]:
85
77
  """
86
78
  Creates a web call via a POST request to the v2 endpoint with specified agent ID and optional metadata or dynamic variables.
87
79
 
@@ -101,19 +93,15 @@ class RetellApp(APIApplication):
101
93
  """
102
94
  if agent_id is None:
103
95
  raise ValueError("Missing required parameter 'agent_id'")
104
- request_body = {
105
- "agent_id": agent_id,
106
- "metadata": metadata,
107
- "retell_llm_dynamic_variables": retell_llm_dynamic_variables,
108
- }
96
+ request_body = {"agent_id": agent_id, "metadata": metadata, "retell_llm_dynamic_variables": retell_llm_dynamic_variables}
109
97
  request_body = {k: v for k, v in request_body.items() if v is not None}
110
98
  url = f"{self.base_url}/v2/create-web-call"
111
99
  query_params = {}
112
- response = self._post(url, data=request_body, params=query_params)
100
+ response = await self._apost(url, data=request_body, params=query_params)
113
101
  response.raise_for_status()
114
102
  return response.json()
115
103
 
116
- def get_get_voice_by_voice_id(self, voice_id) -> dict[str, Any]:
104
+ async def get_get_voice_by_voice_id(self, voice_id) -> dict[str, Any]:
117
105
  """
118
106
  Fetches voice details based on the provided voice ID.
119
107
 
@@ -133,13 +121,11 @@ class RetellApp(APIApplication):
133
121
  raise ValueError("Missing required parameter 'voice_id'")
134
122
  url = f"{self.base_url}/get-voice/{voice_id}"
135
123
  query_params = {}
136
- response = self._get(url, params=query_params)
124
+ response = await self._aget(url, params=query_params)
137
125
  response.raise_for_status()
138
126
  return response.json()
139
127
 
140
- def post_v2_list_calls(
141
- self, filter_criteria=None, sort_order=None, limit=None, pagination_key=None
142
- ) -> list[Any]:
128
+ async def post_v2_list_calls(self, filter_criteria=None, sort_order=None, limit=None, pagination_key=None) -> list[Any]:
143
129
  """
144
130
  Sends a POST request to list call records with optional filtering, sorting, pagination, and limits.
145
131
 
@@ -158,22 +144,15 @@ class RetellApp(APIApplication):
158
144
  Tags:
159
145
  list, calls, api, batch, management, important
160
146
  """
161
- request_body = {
162
- "filter_criteria": filter_criteria,
163
- "sort_order": sort_order,
164
- "limit": limit,
165
- "pagination_key": pagination_key,
166
- }
147
+ request_body = {"filter_criteria": filter_criteria, "sort_order": sort_order, "limit": limit, "pagination_key": pagination_key}
167
148
  request_body = {k: v for k, v in request_body.items() if v is not None}
168
149
  url = f"{self.base_url}/v2/list-calls"
169
150
  query_params = {}
170
- response = self._post(url, data=request_body, params=query_params)
151
+ response = await self._apost(url, data=request_body, params=query_params)
171
152
  response.raise_for_status()
172
153
  return response.json()
173
154
 
174
- def post_create_phone_number(
175
- self, area_code, inbound_agent_id=None, outbound_agent_id=None, nickname=None
176
- ) -> dict[str, Any]:
155
+ async def post_create_phone_number(self, area_code, inbound_agent_id=None, outbound_agent_id=None, nickname=None) -> dict[str, Any]:
177
156
  """
178
157
  Creates a phone number with the specified area code and optional parameters.
179
158
 
@@ -204,11 +183,11 @@ class RetellApp(APIApplication):
204
183
  request_body = {k: v for k, v in request_body.items() if v is not None}
205
184
  url = f"{self.base_url}/create-phone-number"
206
185
  query_params = {}
207
- response = self._post(url, data=request_body, params=query_params)
186
+ response = await self._apost(url, data=request_body, params=query_params)
208
187
  response.raise_for_status()
209
188
  return response.json()
210
189
 
211
- def get_get_phone_number_by_phone_number(self, phone_number) -> dict[str, Any]:
190
+ async def get_get_phone_number_by_phone_number(self, phone_number) -> dict[str, Any]:
212
191
  """
213
192
  Retrieves phone number details by making a GET request to the API endpoint using the provided phone number.
214
193
 
@@ -229,13 +208,11 @@ class RetellApp(APIApplication):
229
208
  raise ValueError("Missing required parameter 'phone_number'")
230
209
  url = f"{self.base_url}/get-phone-number/{phone_number}"
231
210
  query_params = {}
232
- response = self._get(url, params=query_params)
211
+ response = await self._aget(url, params=query_params)
233
212
  response.raise_for_status()
234
213
  return response.json()
235
214
 
236
- def get_list_phone_numbers(
237
- self,
238
- ) -> list[Any]:
215
+ async def get_list_phone_numbers(self) -> list[Any]:
239
216
  """
240
217
  Retrieves a list of phone numbers from the remote API.
241
218
 
@@ -253,11 +230,11 @@ class RetellApp(APIApplication):
253
230
  """
254
231
  url = f"{self.base_url}/list-phone-numbers"
255
232
  query_params = {}
256
- response = self._get(url, params=query_params)
233
+ response = await self._aget(url, params=query_params)
257
234
  response.raise_for_status()
258
235
  return response.json()
259
236
 
260
- def patch_update_phone_number_by_phone_number(
237
+ async def patch_update_phone_number_by_phone_number(
261
238
  self, phone_number, inbound_agent_id=None, outbound_agent_id=None, nickname=None
262
239
  ) -> dict[str, Any]:
263
240
  """
@@ -281,11 +258,7 @@ class RetellApp(APIApplication):
281
258
  """
282
259
  if phone_number is None:
283
260
  raise ValueError("Missing required parameter 'phone_number'")
284
- request_body = {
285
- "inbound_agent_id": inbound_agent_id,
286
- "outbound_agent_id": outbound_agent_id,
287
- "nickname": nickname,
288
- }
261
+ request_body = {"inbound_agent_id": inbound_agent_id, "outbound_agent_id": outbound_agent_id, "nickname": nickname}
289
262
  request_body = {k: v for k, v in request_body.items() if v is not None}
290
263
  url = f"{self.base_url}/update-phone-number/{phone_number}"
291
264
  query_params = {}
@@ -293,7 +266,7 @@ class RetellApp(APIApplication):
293
266
  response.raise_for_status()
294
267
  return response.json()
295
268
 
296
- def delete_delete_phone_number_by_phone_number(self, phone_number) -> Any:
269
+ async def delete_delete_phone_number_by_phone_number(self, phone_number) -> Any:
297
270
  """
298
271
  Deletes a phone number resource by its phone number identifier via an HTTP DELETE request.
299
272
 
@@ -314,7 +287,7 @@ class RetellApp(APIApplication):
314
287
  raise ValueError("Missing required parameter 'phone_number'")
315
288
  url = f"{self.base_url}/delete-phone-number/{phone_number}"
316
289
  query_params = {}
317
- response = self._delete(url, params=query_params)
290
+ response = await self._adelete(url, params=query_params)
318
291
  response.raise_for_status()
319
292
  return response.json()
320
293