universal-mcp-applications 0.1.21__py3-none-any.whl → 0.1.22__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 +166 -0
- universal_mcp/applications/airtable/app.py +0 -1
- universal_mcp/applications/apollo/app.py +0 -1
- universal_mcp/applications/aws_s3/app.py +40 -39
- universal_mcp/applications/browser_use/README.md +1 -0
- universal_mcp/applications/browser_use/__init__.py +0 -0
- universal_mcp/applications/browser_use/app.py +76 -0
- universal_mcp/applications/calendly/app.py +125 -125
- universal_mcp/applications/canva/app.py +95 -99
- universal_mcp/applications/confluence/app.py +0 -1
- universal_mcp/applications/contentful/app.py +4 -5
- universal_mcp/applications/domain_checker/app.py +11 -15
- universal_mcp/applications/e2b/app.py +4 -4
- universal_mcp/applications/elevenlabs/app.py +18 -15
- universal_mcp/applications/exa/app.py +17 -17
- universal_mcp/applications/falai/app.py +28 -29
- universal_mcp/applications/file_system/app.py +9 -9
- universal_mcp/applications/firecrawl/app.py +36 -36
- universal_mcp/applications/fireflies/app.py +55 -56
- universal_mcp/applications/fpl/app.py +49 -50
- universal_mcp/applications/ghost_content/app.py +0 -1
- universal_mcp/applications/github/app.py +41 -43
- universal_mcp/applications/google_calendar/app.py +40 -39
- universal_mcp/applications/google_docs/app.py +56 -56
- universal_mcp/applications/google_drive/app.py +212 -215
- universal_mcp/applications/google_gemini/app.py +1 -5
- universal_mcp/applications/google_mail/app.py +91 -90
- universal_mcp/applications/google_searchconsole/app.py +29 -29
- universal_mcp/applications/google_sheet/app.py +115 -115
- universal_mcp/applications/hashnode/README.md +6 -3
- universal_mcp/applications/hashnode/app.py +174 -25
- universal_mcp/applications/http_tools/app.py +10 -11
- universal_mcp/applications/hubspot/__init__.py +1 -1
- universal_mcp/applications/hubspot/api_segments/api_segment_base.py +36 -7
- universal_mcp/applications/hubspot/api_segments/crm_api.py +368 -368
- universal_mcp/applications/hubspot/api_segments/marketing_api.py +115 -115
- universal_mcp/applications/hubspot/app.py +131 -72
- universal_mcp/applications/jira/app.py +0 -1
- universal_mcp/applications/linkedin/app.py +20 -20
- universal_mcp/applications/markitdown/app.py +10 -5
- universal_mcp/applications/ms_teams/app.py +123 -123
- universal_mcp/applications/openai/app.py +40 -39
- universal_mcp/applications/outlook/app.py +32 -32
- universal_mcp/applications/perplexity/app.py +4 -4
- universal_mcp/applications/reddit/app.py +69 -70
- universal_mcp/applications/resend/app.py +116 -117
- universal_mcp/applications/rocketlane/app.py +0 -1
- universal_mcp/applications/scraper/__init__.py +1 -1
- universal_mcp/applications/scraper/app.py +80 -81
- universal_mcp/applications/serpapi/app.py +14 -14
- universal_mcp/applications/sharepoint/app.py +19 -20
- universal_mcp/applications/shopify/app.py +0 -1
- universal_mcp/applications/slack/app.py +48 -48
- universal_mcp/applications/tavily/app.py +4 -4
- universal_mcp/applications/twitter/api_segments/compliance_api.py +13 -15
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +20 -20
- universal_mcp/applications/twitter/api_segments/dm_events_api.py +12 -12
- universal_mcp/applications/twitter/api_segments/likes_api.py +12 -12
- universal_mcp/applications/twitter/api_segments/lists_api.py +37 -39
- universal_mcp/applications/twitter/api_segments/spaces_api.py +24 -24
- universal_mcp/applications/twitter/api_segments/trends_api.py +4 -4
- universal_mcp/applications/twitter/api_segments/tweets_api.py +105 -105
- universal_mcp/applications/twitter/api_segments/usage_api.py +4 -4
- universal_mcp/applications/twitter/api_segments/users_api.py +136 -136
- universal_mcp/applications/twitter/app.py +6 -2
- universal_mcp/applications/unipile/app.py +90 -97
- universal_mcp/applications/whatsapp/app.py +53 -54
- universal_mcp/applications/whatsapp/audio.py +39 -35
- universal_mcp/applications/whatsapp/whatsapp.py +176 -154
- universal_mcp/applications/whatsapp_business/app.py +92 -92
- universal_mcp/applications/yahoo_finance/app.py +105 -63
- universal_mcp/applications/youtube/app.py +193 -196
- universal_mcp/applications/zenquotes/__init__.py +2 -0
- universal_mcp/applications/zenquotes/app.py +3 -3
- {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.22.dist-info}/METADATA +2 -1
- {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.22.dist-info}/RECORD +78 -74
- {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.22.dist-info}/WHEEL +0 -0
- {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.22.dist-info}/licenses/LICENSE +0 -0
|
@@ -12,13 +12,13 @@ class CanvaApp(APIApplication):
|
|
|
12
12
|
def get_app_jwks(self, appId) -> dict[str, Any]:
|
|
13
13
|
"""
|
|
14
14
|
Retrieves the JSON Web Key Set (JWKS) for a given application ID. The JWKS contains public keys essential for verifying the authenticity of JSON Web Tokens (JWTs) issued by the application, ensuring secure communication.
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
Args:
|
|
17
17
|
appId (string): appId
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
Returns:
|
|
20
20
|
dict[str, Any]: OK
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
Tags:
|
|
23
23
|
app
|
|
24
24
|
"""
|
|
@@ -33,13 +33,13 @@ class CanvaApp(APIApplication):
|
|
|
33
33
|
def get_asset(self, assetId) -> dict[str, Any]:
|
|
34
34
|
"""
|
|
35
35
|
Fetches the details of a specific asset using its unique identifier. This function performs a GET request to retrieve asset data, distinguishing it from other functions that update (`v1_assets_assetid2`, `v1_assets_assetid3`) or delete (`v1_assets_assetid`) assets at the same endpoint.
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
Args:
|
|
38
38
|
assetId (string): assetId
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
Returns:
|
|
41
41
|
dict[str, Any]: OK
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
Tags:
|
|
44
44
|
asset
|
|
45
45
|
"""
|
|
@@ -54,7 +54,7 @@ class CanvaApp(APIApplication):
|
|
|
54
54
|
def post_update_asset(self, assetId, name=None, tags=None) -> dict[str, Any]:
|
|
55
55
|
"""
|
|
56
56
|
Updates an asset's name and tags by its ID using an HTTP POST request. This method is distinct from the PATCH-based update function (`v1_assets_assetid2`), which performs a similar action on the same `/v1/assets/{assetId}` endpoint.
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
Args:
|
|
59
59
|
assetId (string): assetId
|
|
60
60
|
name (string): name Example: '<string>'.
|
|
@@ -69,10 +69,10 @@ class CanvaApp(APIApplication):
|
|
|
69
69
|
]
|
|
70
70
|
}
|
|
71
71
|
```
|
|
72
|
-
|
|
72
|
+
|
|
73
73
|
Returns:
|
|
74
74
|
dict[str, Any]: OK
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
Tags:
|
|
77
77
|
asset
|
|
78
78
|
"""
|
|
@@ -92,13 +92,13 @@ class CanvaApp(APIApplication):
|
|
|
92
92
|
def delete_asset(self, assetId) -> Any:
|
|
93
93
|
"""
|
|
94
94
|
Deletes a specific Canva asset identified by its unique ID. This function sends an HTTP DELETE request to the `/v1/assets/{assetId}` endpoint to permanently remove the resource, returning the API's confirmation response upon successful completion.
|
|
95
|
-
|
|
95
|
+
|
|
96
96
|
Args:
|
|
97
97
|
assetId (string): assetId
|
|
98
|
-
|
|
98
|
+
|
|
99
99
|
Returns:
|
|
100
100
|
Any: OK
|
|
101
|
-
|
|
101
|
+
|
|
102
102
|
Tags:
|
|
103
103
|
asset
|
|
104
104
|
"""
|
|
@@ -113,7 +113,7 @@ class CanvaApp(APIApplication):
|
|
|
113
113
|
def patch_asset(self, assetId, name=None, tags=None) -> dict[str, Any]:
|
|
114
114
|
"""
|
|
115
115
|
Partially updates an asset by its ID using an HTTP PATCH request to modify specific fields like name or tags. Unlike `v1_assets_assetid3` which uses POST, this method applies incremental changes, returning the updated asset data upon completion.
|
|
116
|
-
|
|
116
|
+
|
|
117
117
|
Args:
|
|
118
118
|
assetId (string): assetId
|
|
119
119
|
name (string): name Example: '<string>'.
|
|
@@ -128,10 +128,10 @@ class CanvaApp(APIApplication):
|
|
|
128
128
|
]
|
|
129
129
|
}
|
|
130
130
|
```
|
|
131
|
-
|
|
131
|
+
|
|
132
132
|
Returns:
|
|
133
133
|
dict[str, Any]: OK
|
|
134
|
-
|
|
134
|
+
|
|
135
135
|
Tags:
|
|
136
136
|
asset
|
|
137
137
|
"""
|
|
@@ -151,13 +151,13 @@ class CanvaApp(APIApplication):
|
|
|
151
151
|
def upload_asset(self, request_body=None) -> dict[str, Any]:
|
|
152
152
|
"""
|
|
153
153
|
Uploads an asset by sending its data to the `/v1/assets/upload` endpoint. This function performs a direct, synchronous upload, returning a confirmation. It differs from `v1_asset_uploads`, which initiates an asynchronous upload job tracked by an ID.
|
|
154
|
-
|
|
154
|
+
|
|
155
155
|
Args:
|
|
156
156
|
request_body (dict | None): Optional dictionary for arbitrary request body data.
|
|
157
|
-
|
|
157
|
+
|
|
158
158
|
Returns:
|
|
159
159
|
dict[str, Any]: OK
|
|
160
|
-
|
|
160
|
+
|
|
161
161
|
Tags:
|
|
162
162
|
asset
|
|
163
163
|
"""
|
|
@@ -170,13 +170,13 @@ class CanvaApp(APIApplication):
|
|
|
170
170
|
def create_asset_upload_job(self, request_body=None) -> dict[str, Any]:
|
|
171
171
|
"""
|
|
172
172
|
Initiates an asynchronous asset upload by creating an upload job. This method returns details, like a job ID, for subsequent steps. It differs from `v1_assets_upload`, which targets a direct, synchronous upload endpoint.
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
Args:
|
|
175
175
|
request_body (dict | None): Optional dictionary for arbitrary request body data.
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
Returns:
|
|
178
178
|
dict[str, Any]: OK
|
|
179
|
-
|
|
179
|
+
|
|
180
180
|
Tags:
|
|
181
181
|
asset
|
|
182
182
|
"""
|
|
@@ -189,13 +189,13 @@ class CanvaApp(APIApplication):
|
|
|
189
189
|
def get_asset_upload_job_status(self, jobId) -> dict[str, Any]:
|
|
190
190
|
"""
|
|
191
191
|
Retrieves the status and results of an asynchronous asset upload job using its unique job ID. This allows for checking the outcome of an upload initiated by `v1_asset_uploads`, returning details on its completion and any resulting asset information.
|
|
192
|
-
|
|
192
|
+
|
|
193
193
|
Args:
|
|
194
194
|
jobId (string): jobId
|
|
195
|
-
|
|
195
|
+
|
|
196
196
|
Returns:
|
|
197
197
|
dict[str, Any]: OK
|
|
198
|
-
|
|
198
|
+
|
|
199
199
|
Tags:
|
|
200
200
|
asset
|
|
201
201
|
"""
|
|
@@ -212,7 +212,7 @@ class CanvaApp(APIApplication):
|
|
|
212
212
|
) -> dict[str, Any]:
|
|
213
213
|
"""
|
|
214
214
|
Initiates an autofill job to create a new design by populating a brand template with provided data. It sends a POST request with the template ID, data, and title, returning the details of the newly created job.
|
|
215
|
-
|
|
215
|
+
|
|
216
216
|
Args:
|
|
217
217
|
brand_template_id (string): brand_template_id Example: '<string>'.
|
|
218
218
|
data (object): data
|
|
@@ -236,10 +236,10 @@ class CanvaApp(APIApplication):
|
|
|
236
236
|
"title": "<string>"
|
|
237
237
|
}
|
|
238
238
|
```
|
|
239
|
-
|
|
239
|
+
|
|
240
240
|
Returns:
|
|
241
241
|
dict[str, Any]: OK
|
|
242
|
-
|
|
242
|
+
|
|
243
243
|
Tags:
|
|
244
244
|
autofill
|
|
245
245
|
"""
|
|
@@ -259,13 +259,13 @@ class CanvaApp(APIApplication):
|
|
|
259
259
|
def get_autofill_job_status(self, jobId) -> dict[str, Any]:
|
|
260
260
|
"""
|
|
261
261
|
Retrieves the status and results of an asynchronous autofill job by its unique `jobId`. This function is used to check the outcome of a template population operation initiated by the `v1_autofills` method.
|
|
262
|
-
|
|
262
|
+
|
|
263
263
|
Args:
|
|
264
264
|
jobId (string): jobId
|
|
265
|
-
|
|
265
|
+
|
|
266
266
|
Returns:
|
|
267
267
|
dict[str, Any]: OK
|
|
268
|
-
|
|
268
|
+
|
|
269
269
|
Tags:
|
|
270
270
|
autofill
|
|
271
271
|
"""
|
|
@@ -282,7 +282,7 @@ class CanvaApp(APIApplication):
|
|
|
282
282
|
) -> dict[str, Any]:
|
|
283
283
|
"""
|
|
284
284
|
Searches for and retrieves a paginated list of brand templates. Results can be filtered by ownership and sorted by relevance, modification date, or title. A continuation token can be used to fetch subsequent pages of templates.
|
|
285
|
-
|
|
285
|
+
|
|
286
286
|
Args:
|
|
287
287
|
query (string): Lets you search the brand templates available to the user using a search term or terms. Example: '<string>'.
|
|
288
288
|
continuation (string): If the success response contains a continuation token, the user has access to more
|
|
@@ -301,10 +301,10 @@ class CanvaApp(APIApplication):
|
|
|
301
301
|
- `MODIFIED_ASCENDING`: Sort results by the date last modified in ascending order.
|
|
302
302
|
- `TITLE_DESCENDING`: Sort results by title in descending order.
|
|
303
303
|
- `TITLE_ASCENDING`: Sort results by title in ascending order. Example: '<string>'.
|
|
304
|
-
|
|
304
|
+
|
|
305
305
|
Returns:
|
|
306
306
|
dict[str, Any]: OK
|
|
307
|
-
|
|
307
|
+
|
|
308
308
|
Tags:
|
|
309
309
|
brand_template, important
|
|
310
310
|
"""
|
|
@@ -326,13 +326,13 @@ class CanvaApp(APIApplication):
|
|
|
326
326
|
def get_brand_template_by_id(self, brandTemplateId) -> dict[str, Any]:
|
|
327
327
|
"""
|
|
328
328
|
Retrieves the complete metadata for a specific brand template using its unique identifier. This is distinct from `v1_brand_templates`, which lists multiple templates, and `v1_brand_templates_brandtemplateid_dataset`, which gets only a template's dataset.
|
|
329
|
-
|
|
329
|
+
|
|
330
330
|
Args:
|
|
331
331
|
brandTemplateId (string): brandTemplateId
|
|
332
|
-
|
|
332
|
+
|
|
333
333
|
Returns:
|
|
334
334
|
dict[str, Any]: OK
|
|
335
|
-
|
|
335
|
+
|
|
336
336
|
Tags:
|
|
337
337
|
brand_template
|
|
338
338
|
"""
|
|
@@ -344,18 +344,16 @@ class CanvaApp(APIApplication):
|
|
|
344
344
|
response.raise_for_status()
|
|
345
345
|
return response.json()
|
|
346
346
|
|
|
347
|
-
def get_brand_template_dataset(
|
|
348
|
-
self, brandTemplateId
|
|
349
|
-
) -> dict[str, Any]:
|
|
347
|
+
def get_brand_template_dataset(self, brandTemplateId) -> dict[str, Any]:
|
|
350
348
|
"""
|
|
351
349
|
Retrieves the dataset for a specific brand template by its ID. The dataset defines the names and types of autofillable fields, which is essential for programmatically populating the template with data.
|
|
352
|
-
|
|
350
|
+
|
|
353
351
|
Args:
|
|
354
352
|
brandTemplateId (string): brandTemplateId
|
|
355
|
-
|
|
353
|
+
|
|
356
354
|
Returns:
|
|
357
355
|
dict[str, Any]: OK
|
|
358
|
-
|
|
356
|
+
|
|
359
357
|
Tags:
|
|
360
358
|
brand_template
|
|
361
359
|
"""
|
|
@@ -372,7 +370,7 @@ class CanvaApp(APIApplication):
|
|
|
372
370
|
) -> dict[str, Any]:
|
|
373
371
|
"""
|
|
374
372
|
Creates a new top-level comment attached to a specific resource, such as a design. It allows for an optional assignee and a message body, sending a POST request to the `/v1/comments` endpoint and returning the details of the newly created comment.
|
|
375
|
-
|
|
373
|
+
|
|
376
374
|
Args:
|
|
377
375
|
assignee_id (string): assignee_id Example: '<string>'.
|
|
378
376
|
attached_to (object): attached_to
|
|
@@ -388,10 +386,10 @@ class CanvaApp(APIApplication):
|
|
|
388
386
|
"message": "<string>"
|
|
389
387
|
}
|
|
390
388
|
```
|
|
391
|
-
|
|
389
|
+
|
|
392
390
|
Returns:
|
|
393
391
|
dict[str, Any]: OK
|
|
394
|
-
|
|
392
|
+
|
|
395
393
|
Tags:
|
|
396
394
|
comment
|
|
397
395
|
"""
|
|
@@ -412,7 +410,7 @@ class CanvaApp(APIApplication):
|
|
|
412
410
|
) -> dict[str, Any]:
|
|
413
411
|
"""
|
|
414
412
|
Creates a reply to a specific comment, identified by `commentId`. It sends a POST request with the reply's message and attachment details to the `/v1/comments/{commentId}/replies` endpoint, adding a threaded response to an existing comment.
|
|
415
|
-
|
|
413
|
+
|
|
416
414
|
Args:
|
|
417
415
|
commentId (string): commentId
|
|
418
416
|
attached_to (object): attached_to
|
|
@@ -427,10 +425,10 @@ class CanvaApp(APIApplication):
|
|
|
427
425
|
"message": "<string>"
|
|
428
426
|
}
|
|
429
427
|
```
|
|
430
|
-
|
|
428
|
+
|
|
431
429
|
Returns:
|
|
432
430
|
dict[str, Any]: OK
|
|
433
|
-
|
|
431
|
+
|
|
434
432
|
Tags:
|
|
435
433
|
comment
|
|
436
434
|
"""
|
|
@@ -447,19 +445,17 @@ class CanvaApp(APIApplication):
|
|
|
447
445
|
response.raise_for_status()
|
|
448
446
|
return response.json()
|
|
449
447
|
|
|
450
|
-
def get_design_comment(
|
|
451
|
-
self, designId, commentId
|
|
452
|
-
) -> dict[str, Any]:
|
|
448
|
+
def get_design_comment(self, designId, commentId) -> dict[str, Any]:
|
|
453
449
|
"""
|
|
454
450
|
Fetches a specific comment from a design using both the design and comment IDs. Unlike other functions that create comments or replies, this method exclusively retrieves the data for a single, existing comment by making a GET request to the API.
|
|
455
|
-
|
|
451
|
+
|
|
456
452
|
Args:
|
|
457
453
|
designId (string): designId
|
|
458
454
|
commentId (string): commentId
|
|
459
|
-
|
|
455
|
+
|
|
460
456
|
Returns:
|
|
461
457
|
dict[str, Any]: OK
|
|
462
|
-
|
|
458
|
+
|
|
463
459
|
Tags:
|
|
464
460
|
comment
|
|
465
461
|
"""
|
|
@@ -476,10 +472,10 @@ class CanvaApp(APIApplication):
|
|
|
476
472
|
def get_connection_keys(self) -> dict[str, Any]:
|
|
477
473
|
"""
|
|
478
474
|
Fetches a list of connection keys for the authenticated user or application from the `/v1/connect/keys` endpoint. These keys are used for establishing secure connections or integrations with the Canva API.
|
|
479
|
-
|
|
475
|
+
|
|
480
476
|
Returns:
|
|
481
477
|
dict[str, Any]: OK
|
|
482
|
-
|
|
478
|
+
|
|
483
479
|
Tags:
|
|
484
480
|
connect
|
|
485
481
|
"""
|
|
@@ -494,7 +490,7 @@ class CanvaApp(APIApplication):
|
|
|
494
490
|
) -> dict[str, Any]:
|
|
495
491
|
"""
|
|
496
492
|
Retrieves a list of designs available to the user. Results can be filtered by a search query, ownership status, and sort order. It supports pagination for large datasets using a continuation token to fetch multiple designs.
|
|
497
|
-
|
|
493
|
+
|
|
498
494
|
Args:
|
|
499
495
|
query (string): Lets you search the user's designs, and designs shared with the user, using a search term or terms. Example: '<string>'.
|
|
500
496
|
continuation (string): If the success response contains a continuation token, the list contains more designs
|
|
@@ -511,10 +507,10 @@ class CanvaApp(APIApplication):
|
|
|
511
507
|
- `modified_ascending`: Sort results by the date last modified in ascending order.
|
|
512
508
|
- `title_descending`: Sort results by title in descending order.
|
|
513
509
|
- `title_ascending`: Sort results by title in ascending order. Example: '<string>'.
|
|
514
|
-
|
|
510
|
+
|
|
515
511
|
Returns:
|
|
516
512
|
dict[str, Any]: OK
|
|
517
|
-
|
|
513
|
+
|
|
518
514
|
Tags:
|
|
519
515
|
design, important
|
|
520
516
|
"""
|
|
@@ -538,7 +534,7 @@ class CanvaApp(APIApplication):
|
|
|
538
534
|
) -> dict[str, Any]:
|
|
539
535
|
"""
|
|
540
536
|
Creates a new design from an asset. This function sends a POST request to the `/v1/designs` endpoint with the asset ID, design type, and title, returning the data for the newly created design resource.
|
|
541
|
-
|
|
537
|
+
|
|
542
538
|
Args:
|
|
543
539
|
asset_id (string): asset_id Example: '<string>'.
|
|
544
540
|
design_type (object): design_type
|
|
@@ -554,10 +550,10 @@ class CanvaApp(APIApplication):
|
|
|
554
550
|
"title": "<string>"
|
|
555
551
|
}
|
|
556
552
|
```
|
|
557
|
-
|
|
553
|
+
|
|
558
554
|
Returns:
|
|
559
555
|
dict[str, Any]: OK
|
|
560
|
-
|
|
556
|
+
|
|
561
557
|
Tags:
|
|
562
558
|
design
|
|
563
559
|
"""
|
|
@@ -576,13 +572,13 @@ class CanvaApp(APIApplication):
|
|
|
576
572
|
def get_design(self, designId) -> dict[str, Any]:
|
|
577
573
|
"""
|
|
578
574
|
Fetches the details for a single, specific design using its unique identifier. This function retrieves one design, distinguishing it from `v1_designs` which lists multiple designs and `v1_designs1` which creates a new design.
|
|
579
|
-
|
|
575
|
+
|
|
580
576
|
Args:
|
|
581
577
|
designId (string): designId
|
|
582
|
-
|
|
578
|
+
|
|
583
579
|
Returns:
|
|
584
580
|
dict[str, Any]: OK
|
|
585
|
-
|
|
581
|
+
|
|
586
582
|
Tags:
|
|
587
583
|
design
|
|
588
584
|
"""
|
|
@@ -597,13 +593,13 @@ class CanvaApp(APIApplication):
|
|
|
597
593
|
def create_design_import_job(self, request_body=None) -> dict[str, Any]:
|
|
598
594
|
"""
|
|
599
595
|
Initiates a job to import a file (e.g., PDF, PPTX) for creating a new Canva design. This function sends a POST request to the `/v1/imports` endpoint and returns details of the created import job, including a job ID for status tracking.
|
|
600
|
-
|
|
596
|
+
|
|
601
597
|
Args:
|
|
602
598
|
request_body (dict | None): Optional dictionary for arbitrary request body data.
|
|
603
|
-
|
|
599
|
+
|
|
604
600
|
Returns:
|
|
605
601
|
dict[str, Any]: OK
|
|
606
|
-
|
|
602
|
+
|
|
607
603
|
Tags:
|
|
608
604
|
design_import
|
|
609
605
|
"""
|
|
@@ -616,13 +612,13 @@ class CanvaApp(APIApplication):
|
|
|
616
612
|
def get_design_import_status(self, jobId) -> dict[str, Any]:
|
|
617
613
|
"""
|
|
618
614
|
Retrieves the status and results of a specific design import job using its unique `jobId`. This function checks the outcome of an import process initiated by the `v1_imports` method, returning details about the job's progress and final state.
|
|
619
|
-
|
|
615
|
+
|
|
620
616
|
Args:
|
|
621
617
|
jobId (string): jobId
|
|
622
|
-
|
|
618
|
+
|
|
623
619
|
Returns:
|
|
624
620
|
dict[str, Any]: OK
|
|
625
|
-
|
|
621
|
+
|
|
626
622
|
Tags:
|
|
627
623
|
design_import
|
|
628
624
|
"""
|
|
@@ -637,7 +633,7 @@ class CanvaApp(APIApplication):
|
|
|
637
633
|
def create_design_export(self, design_id=None, format=None) -> dict[str, Any]:
|
|
638
634
|
"""
|
|
639
635
|
Initiates an export job for a specified design based on its ID and format details (e.g., file type, quality). It returns the export job's details, including an ID used to track its status with `v1_exports_exportid`.
|
|
640
|
-
|
|
636
|
+
|
|
641
637
|
Args:
|
|
642
638
|
design_id (string): design_id Example: '<string>'.
|
|
643
639
|
format (object): format
|
|
@@ -656,10 +652,10 @@ class CanvaApp(APIApplication):
|
|
|
656
652
|
}
|
|
657
653
|
}
|
|
658
654
|
```
|
|
659
|
-
|
|
655
|
+
|
|
660
656
|
Returns:
|
|
661
657
|
dict[str, Any]: OK
|
|
662
|
-
|
|
658
|
+
|
|
663
659
|
Tags:
|
|
664
660
|
export
|
|
665
661
|
"""
|
|
@@ -677,13 +673,13 @@ class CanvaApp(APIApplication):
|
|
|
677
673
|
def get_export_job_status(self, exportId) -> dict[str, Any]:
|
|
678
674
|
"""
|
|
679
675
|
Retrieves the status and results of a specific design export job using its unique ID. This is used to check on an export initiated by the `v1_exports` function and to obtain download links for the completed file.
|
|
680
|
-
|
|
676
|
+
|
|
681
677
|
Args:
|
|
682
678
|
exportId (string): exportId
|
|
683
|
-
|
|
679
|
+
|
|
684
680
|
Returns:
|
|
685
681
|
dict[str, Any]: OK
|
|
686
|
-
|
|
682
|
+
|
|
687
683
|
Tags:
|
|
688
684
|
export
|
|
689
685
|
"""
|
|
@@ -698,13 +694,13 @@ class CanvaApp(APIApplication):
|
|
|
698
694
|
def get_folder_by_id(self, folderId) -> dict[str, Any]:
|
|
699
695
|
"""
|
|
700
696
|
Retrieves detailed information for a specific folder using its unique ID. This GET operation fetches folder metadata, distinguishing it from functions that delete (`v1_folders_folderid`) or update (`v1_folders_folderid2`) the same folder resource.
|
|
701
|
-
|
|
697
|
+
|
|
702
698
|
Args:
|
|
703
699
|
folderId (string): folderId
|
|
704
|
-
|
|
700
|
+
|
|
705
701
|
Returns:
|
|
706
702
|
dict[str, Any]: OK
|
|
707
|
-
|
|
703
|
+
|
|
708
704
|
Tags:
|
|
709
705
|
folder
|
|
710
706
|
"""
|
|
@@ -719,13 +715,13 @@ class CanvaApp(APIApplication):
|
|
|
719
715
|
def delete_folder(self, folderId) -> Any:
|
|
720
716
|
"""
|
|
721
717
|
Deletes a folder and all its contents using the folder's unique identifier. This function sends an HTTP DELETE request to the `/v1/folders/{folderId}` endpoint and returns a confirmation status upon successful deletion.
|
|
722
|
-
|
|
718
|
+
|
|
723
719
|
Args:
|
|
724
720
|
folderId (string): folderId
|
|
725
|
-
|
|
721
|
+
|
|
726
722
|
Returns:
|
|
727
723
|
Any: OK
|
|
728
|
-
|
|
724
|
+
|
|
729
725
|
Tags:
|
|
730
726
|
folder
|
|
731
727
|
"""
|
|
@@ -740,7 +736,7 @@ class CanvaApp(APIApplication):
|
|
|
740
736
|
def update_folder(self, folderId, name=None) -> dict[str, Any]:
|
|
741
737
|
"""
|
|
742
738
|
Updates a specific folder's properties, such as its name, using its unique ID. This function sends a PATCH request to the `/v1/folders/{folderId}` endpoint to apply partial modifications and returns the updated folder information upon success.
|
|
743
|
-
|
|
739
|
+
|
|
744
740
|
Args:
|
|
745
741
|
folderId (string): folderId
|
|
746
742
|
name (string): name
|
|
@@ -750,10 +746,10 @@ class CanvaApp(APIApplication):
|
|
|
750
746
|
"name": "<string>"
|
|
751
747
|
}
|
|
752
748
|
```
|
|
753
|
-
|
|
749
|
+
|
|
754
750
|
Returns:
|
|
755
751
|
dict[str, Any]: OK
|
|
756
|
-
|
|
752
|
+
|
|
757
753
|
Tags:
|
|
758
754
|
folder
|
|
759
755
|
"""
|
|
@@ -774,7 +770,7 @@ class CanvaApp(APIApplication):
|
|
|
774
770
|
) -> dict[str, Any]:
|
|
775
771
|
"""
|
|
776
772
|
Lists items within a specific folder. Supports optional filtering by item type (asset, design, folder, template) and pagination using a continuation token to navigate through large result sets.
|
|
777
|
-
|
|
773
|
+
|
|
778
774
|
Args:
|
|
779
775
|
folderId (string): folderId
|
|
780
776
|
continuation (string): If the success response contains a continuation token, the folder contains more items
|
|
@@ -784,10 +780,10 @@ class CanvaApp(APIApplication):
|
|
|
784
780
|
item_types (string): Filter the folder items to only return specified types. The available types are:
|
|
785
781
|
`asset`, `design`, `folder`, and `template`. To filter for more than one item type,
|
|
786
782
|
provide a comma-delimited list. Example: '<string>'.
|
|
787
|
-
|
|
783
|
+
|
|
788
784
|
Returns:
|
|
789
785
|
dict[str, Any]: OK
|
|
790
|
-
|
|
786
|
+
|
|
791
787
|
Tags:
|
|
792
788
|
folder
|
|
793
789
|
"""
|
|
@@ -808,7 +804,7 @@ class CanvaApp(APIApplication):
|
|
|
808
804
|
) -> Any:
|
|
809
805
|
"""
|
|
810
806
|
Moves an item, such as a design or another folder, from a source folder to a destination folder. It requires the unique IDs for the item, the source folder, and the target folder to perform the relocation, returning a status confirmation upon completion.
|
|
811
|
-
|
|
807
|
+
|
|
812
808
|
Args:
|
|
813
809
|
from_folder_id (string): from_folder_id Example: '<string>'.
|
|
814
810
|
item_id (string): item_id Example: '<string>'.
|
|
@@ -821,10 +817,10 @@ class CanvaApp(APIApplication):
|
|
|
821
817
|
"to_folder_id": "<string>"
|
|
822
818
|
}
|
|
823
819
|
```
|
|
824
|
-
|
|
820
|
+
|
|
825
821
|
Returns:
|
|
826
822
|
Any: OK
|
|
827
|
-
|
|
823
|
+
|
|
828
824
|
Tags:
|
|
829
825
|
folder
|
|
830
826
|
"""
|
|
@@ -843,7 +839,7 @@ class CanvaApp(APIApplication):
|
|
|
843
839
|
def create_folder(self, name=None, parent_folder_id=None) -> dict[str, Any]:
|
|
844
840
|
"""
|
|
845
841
|
Creates a new folder, optionally assigning it a name and placing it within a specified parent folder. This function is distinct from others as it uses a POST request to the base `/v1/folders` endpoint, specifically for creation.
|
|
846
|
-
|
|
842
|
+
|
|
847
843
|
Args:
|
|
848
844
|
name (string): name Example: '<string>'.
|
|
849
845
|
parent_folder_id (string): parent_folder_id
|
|
@@ -854,10 +850,10 @@ class CanvaApp(APIApplication):
|
|
|
854
850
|
"parent_folder_id": "<string>"
|
|
855
851
|
}
|
|
856
852
|
```
|
|
857
|
-
|
|
853
|
+
|
|
858
854
|
Returns:
|
|
859
855
|
dict[str, Any]: OK
|
|
860
|
-
|
|
856
|
+
|
|
861
857
|
Tags:
|
|
862
858
|
folder
|
|
863
859
|
"""
|
|
@@ -875,10 +871,10 @@ class CanvaApp(APIApplication):
|
|
|
875
871
|
def get_current_user(self) -> dict[str, Any]:
|
|
876
872
|
"""
|
|
877
873
|
Retrieves core information for the currently authenticated user, such as ID and team details. This function is distinct from `v1_users_me_profile`, which fetches more specific profile data like the user's display name and profile picture.
|
|
878
|
-
|
|
874
|
+
|
|
879
875
|
Returns:
|
|
880
876
|
dict[str, Any]: OK
|
|
881
|
-
|
|
877
|
+
|
|
882
878
|
Tags:
|
|
883
879
|
user, important
|
|
884
880
|
"""
|
|
@@ -891,10 +887,10 @@ class CanvaApp(APIApplication):
|
|
|
891
887
|
def get_current_user_profile(self) -> dict[str, Any]:
|
|
892
888
|
"""
|
|
893
889
|
Fetches detailed profile information for the currently authenticated user. This method is distinct from `v1_users_me`, which retrieves general user account information rather than specific profile details like display name or avatar.
|
|
894
|
-
|
|
890
|
+
|
|
895
891
|
Returns:
|
|
896
892
|
dict[str, Any]: OK
|
|
897
|
-
|
|
893
|
+
|
|
898
894
|
Tags:
|
|
899
895
|
user
|
|
900
896
|
"""
|
|
@@ -2,7 +2,6 @@ from collections.abc import Callable
|
|
|
2
2
|
from typing import Any
|
|
3
3
|
|
|
4
4
|
from loguru import logger
|
|
5
|
-
|
|
6
5
|
from universal_mcp.applications.application import GraphQLApplication
|
|
7
6
|
from universal_mcp.exceptions import NotAuthorizedError
|
|
8
7
|
from universal_mcp.integrations import Integration
|
|
@@ -15,10 +14,10 @@ class ContentfulApp(GraphQLApplication):
|
|
|
15
14
|
**kwargs: Any,
|
|
16
15
|
) -> None:
|
|
17
16
|
self.space_id: str | None = None
|
|
18
|
-
self.environment_id: str = "master"
|
|
17
|
+
self.environment_id: str = "master"
|
|
19
18
|
self._access_token: str | None = None
|
|
20
|
-
self._is_eu_customer: bool = False
|
|
21
|
-
self._credentials_loaded: bool = False
|
|
19
|
+
self._is_eu_customer: bool = False
|
|
20
|
+
self._credentials_loaded: bool = False
|
|
22
21
|
default_base_url = "https://graphql.contentful.com"
|
|
23
22
|
|
|
24
23
|
super().__init__(
|
|
@@ -326,7 +325,7 @@ class ContentfulApp(GraphQLApplication):
|
|
|
326
325
|
|
|
327
326
|
Returns:
|
|
328
327
|
The result of the query, or an error dictionary.
|
|
329
|
-
|
|
328
|
+
|
|
330
329
|
Tags:
|
|
331
330
|
important
|
|
332
331
|
"""
|