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.
- universal_mcp/applications/BEST_PRACTICES.md +1 -1
- universal_mcp/applications/ahrefs/app.py +92 -238
- universal_mcp/applications/airtable/app.py +36 -135
- universal_mcp/applications/apollo/app.py +124 -477
- universal_mcp/applications/asana/app.py +605 -1755
- universal_mcp/applications/aws_s3/app.py +63 -119
- universal_mcp/applications/bill/app.py +644 -2055
- universal_mcp/applications/box/app.py +1246 -4159
- universal_mcp/applications/braze/app.py +410 -1476
- universal_mcp/applications/browser_use/README.md +15 -1
- universal_mcp/applications/browser_use/__init__.py +1 -0
- universal_mcp/applications/browser_use/app.py +91 -26
- universal_mcp/applications/cal_com_v2/app.py +207 -625
- universal_mcp/applications/calendly/app.py +103 -242
- universal_mcp/applications/canva/app.py +75 -140
- universal_mcp/applications/clickup/app.py +331 -798
- universal_mcp/applications/coda/app.py +240 -520
- universal_mcp/applications/confluence/app.py +497 -1285
- universal_mcp/applications/contentful/app.py +40 -155
- universal_mcp/applications/crustdata/app.py +44 -123
- universal_mcp/applications/dialpad/app.py +451 -924
- universal_mcp/applications/digitalocean/app.py +2071 -6082
- universal_mcp/applications/domain_checker/app.py +3 -54
- universal_mcp/applications/e2b/app.py +17 -68
- universal_mcp/applications/elevenlabs/README.md +27 -3
- universal_mcp/applications/elevenlabs/app.py +741 -74
- universal_mcp/applications/exa/README.md +8 -4
- universal_mcp/applications/exa/app.py +415 -186
- universal_mcp/applications/falai/README.md +5 -7
- universal_mcp/applications/falai/app.py +156 -232
- universal_mcp/applications/figma/app.py +91 -175
- universal_mcp/applications/file_system/app.py +2 -13
- universal_mcp/applications/firecrawl/app.py +198 -176
- universal_mcp/applications/fireflies/app.py +59 -281
- universal_mcp/applications/fpl/app.py +92 -529
- universal_mcp/applications/fpl/utils/fixtures.py +15 -49
- universal_mcp/applications/fpl/utils/helper.py +25 -89
- universal_mcp/applications/fpl/utils/league_utils.py +20 -64
- universal_mcp/applications/ghost_content/app.py +70 -179
- universal_mcp/applications/github/app.py +30 -67
- universal_mcp/applications/gong/app.py +142 -302
- universal_mcp/applications/google_calendar/app.py +26 -78
- universal_mcp/applications/google_docs/README.md +15 -14
- universal_mcp/applications/google_docs/app.py +103 -206
- universal_mcp/applications/google_drive/app.py +194 -793
- universal_mcp/applications/google_gemini/app.py +68 -59
- universal_mcp/applications/google_mail/README.md +1 -0
- universal_mcp/applications/google_mail/app.py +93 -214
- universal_mcp/applications/google_searchconsole/app.py +25 -58
- universal_mcp/applications/google_sheet/README.md +2 -1
- universal_mcp/applications/google_sheet/app.py +226 -624
- universal_mcp/applications/google_sheet/helper.py +26 -53
- universal_mcp/applications/hashnode/app.py +57 -269
- universal_mcp/applications/heygen/README.md +10 -32
- universal_mcp/applications/heygen/app.py +339 -811
- universal_mcp/applications/http_tools/app.py +10 -32
- universal_mcp/applications/hubspot/README.md +1 -1
- universal_mcp/applications/hubspot/app.py +7508 -99
- universal_mcp/applications/jira/app.py +2419 -8334
- universal_mcp/applications/klaviyo/app.py +739 -1621
- universal_mcp/applications/linkedin/README.md +18 -1
- universal_mcp/applications/linkedin/app.py +729 -251
- universal_mcp/applications/mailchimp/app.py +696 -1851
- universal_mcp/applications/markitdown/app.py +8 -20
- universal_mcp/applications/miro/app.py +333 -815
- universal_mcp/applications/ms_teams/app.py +420 -1407
- universal_mcp/applications/neon/app.py +144 -250
- universal_mcp/applications/notion/app.py +38 -53
- universal_mcp/applications/onedrive/app.py +26 -48
- universal_mcp/applications/openai/app.py +43 -166
- universal_mcp/applications/outlook/README.md +22 -9
- universal_mcp/applications/outlook/app.py +403 -141
- universal_mcp/applications/perplexity/README.md +2 -1
- universal_mcp/applications/perplexity/app.py +161 -20
- universal_mcp/applications/pipedrive/app.py +1021 -3331
- universal_mcp/applications/posthog/app.py +272 -541
- universal_mcp/applications/reddit/app.py +65 -164
- universal_mcp/applications/resend/app.py +72 -139
- universal_mcp/applications/retell/app.py +23 -50
- universal_mcp/applications/rocketlane/app.py +252 -965
- universal_mcp/applications/scraper/app.py +114 -142
- universal_mcp/applications/semanticscholar/app.py +36 -78
- universal_mcp/applications/semrush/app.py +44 -78
- universal_mcp/applications/sendgrid/app.py +826 -1576
- universal_mcp/applications/sentry/app.py +444 -1079
- universal_mcp/applications/serpapi/app.py +44 -146
- universal_mcp/applications/sharepoint/app.py +27 -49
- universal_mcp/applications/shopify/app.py +1748 -4486
- universal_mcp/applications/shortcut/app.py +275 -536
- universal_mcp/applications/slack/app.py +43 -125
- universal_mcp/applications/spotify/app.py +206 -405
- universal_mcp/applications/supabase/app.py +174 -283
- universal_mcp/applications/tavily/app.py +2 -2
- universal_mcp/applications/trello/app.py +853 -2816
- universal_mcp/applications/twilio/app.py +27 -62
- universal_mcp/applications/twitter/api_segments/compliance_api.py +4 -14
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +6 -18
- universal_mcp/applications/twitter/api_segments/likes_api.py +1 -3
- universal_mcp/applications/twitter/api_segments/lists_api.py +5 -15
- universal_mcp/applications/twitter/api_segments/trends_api.py +1 -3
- universal_mcp/applications/twitter/api_segments/tweets_api.py +9 -31
- universal_mcp/applications/twitter/api_segments/usage_api.py +1 -5
- universal_mcp/applications/twitter/api_segments/users_api.py +14 -42
- universal_mcp/applications/whatsapp/app.py +35 -186
- universal_mcp/applications/whatsapp/audio.py +2 -6
- universal_mcp/applications/whatsapp/whatsapp.py +17 -51
- universal_mcp/applications/whatsapp_business/app.py +86 -299
- universal_mcp/applications/wrike/app.py +80 -153
- universal_mcp/applications/yahoo_finance/app.py +19 -65
- universal_mcp/applications/youtube/app.py +120 -306
- universal_mcp/applications/zenquotes/app.py +3 -3
- {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc16.dist-info}/METADATA +4 -2
- {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc16.dist-info}/RECORD +115 -119
- {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc16.dist-info}/WHEEL +1 -1
- universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
- universal_mcp/applications/hubspot/api_segments/api_segment_base.py +0 -54
- universal_mcp/applications/hubspot/api_segments/crm_api.py +0 -7337
- universal_mcp/applications/hubspot/api_segments/marketing_api.py +0 -1467
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
290
|
+
response = await self._adelete(url, params=query_params)
|
|
318
291
|
response.raise_for_status()
|
|
319
292
|
return response.json()
|
|
320
293
|
|