universal-mcp-applications 0.1.21__py3-none-any.whl → 0.1.23__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 (78) hide show
  1. universal_mcp/applications/BEST_PRACTICES.md +166 -0
  2. universal_mcp/applications/airtable/app.py +0 -1
  3. universal_mcp/applications/apollo/app.py +0 -1
  4. universal_mcp/applications/aws_s3/app.py +40 -39
  5. universal_mcp/applications/browser_use/README.md +1 -0
  6. universal_mcp/applications/browser_use/__init__.py +0 -0
  7. universal_mcp/applications/browser_use/app.py +71 -0
  8. universal_mcp/applications/calendly/app.py +125 -125
  9. universal_mcp/applications/canva/app.py +95 -99
  10. universal_mcp/applications/confluence/app.py +0 -1
  11. universal_mcp/applications/contentful/app.py +4 -5
  12. universal_mcp/applications/domain_checker/app.py +11 -15
  13. universal_mcp/applications/e2b/app.py +4 -4
  14. universal_mcp/applications/elevenlabs/app.py +18 -15
  15. universal_mcp/applications/exa/app.py +17 -17
  16. universal_mcp/applications/falai/app.py +28 -29
  17. universal_mcp/applications/file_system/app.py +9 -9
  18. universal_mcp/applications/firecrawl/app.py +36 -36
  19. universal_mcp/applications/fireflies/app.py +55 -56
  20. universal_mcp/applications/fpl/app.py +49 -50
  21. universal_mcp/applications/ghost_content/app.py +0 -1
  22. universal_mcp/applications/github/app.py +41 -43
  23. universal_mcp/applications/google_calendar/app.py +40 -39
  24. universal_mcp/applications/google_docs/app.py +168 -232
  25. universal_mcp/applications/google_drive/app.py +212 -215
  26. universal_mcp/applications/google_gemini/app.py +1 -5
  27. universal_mcp/applications/google_mail/app.py +91 -90
  28. universal_mcp/applications/google_searchconsole/app.py +29 -29
  29. universal_mcp/applications/google_sheet/app.py +115 -115
  30. universal_mcp/applications/hashnode/README.md +6 -3
  31. universal_mcp/applications/hashnode/app.py +174 -25
  32. universal_mcp/applications/http_tools/app.py +10 -11
  33. universal_mcp/applications/hubspot/__init__.py +1 -1
  34. universal_mcp/applications/hubspot/api_segments/api_segment_base.py +36 -7
  35. universal_mcp/applications/hubspot/api_segments/crm_api.py +368 -368
  36. universal_mcp/applications/hubspot/api_segments/marketing_api.py +115 -115
  37. universal_mcp/applications/hubspot/app.py +131 -72
  38. universal_mcp/applications/jira/app.py +0 -1
  39. universal_mcp/applications/linkedin/app.py +20 -20
  40. universal_mcp/applications/markitdown/app.py +10 -5
  41. universal_mcp/applications/ms_teams/app.py +123 -123
  42. universal_mcp/applications/openai/app.py +40 -39
  43. universal_mcp/applications/outlook/app.py +32 -32
  44. universal_mcp/applications/perplexity/app.py +4 -4
  45. universal_mcp/applications/reddit/app.py +69 -70
  46. universal_mcp/applications/resend/app.py +116 -117
  47. universal_mcp/applications/rocketlane/app.py +0 -1
  48. universal_mcp/applications/scraper/__init__.py +1 -1
  49. universal_mcp/applications/scraper/app.py +80 -81
  50. universal_mcp/applications/serpapi/app.py +14 -14
  51. universal_mcp/applications/sharepoint/app.py +19 -20
  52. universal_mcp/applications/shopify/app.py +0 -1
  53. universal_mcp/applications/slack/app.py +48 -48
  54. universal_mcp/applications/tavily/app.py +4 -4
  55. universal_mcp/applications/twitter/api_segments/compliance_api.py +13 -15
  56. universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +20 -20
  57. universal_mcp/applications/twitter/api_segments/dm_events_api.py +12 -12
  58. universal_mcp/applications/twitter/api_segments/likes_api.py +12 -12
  59. universal_mcp/applications/twitter/api_segments/lists_api.py +37 -39
  60. universal_mcp/applications/twitter/api_segments/spaces_api.py +24 -24
  61. universal_mcp/applications/twitter/api_segments/trends_api.py +4 -4
  62. universal_mcp/applications/twitter/api_segments/tweets_api.py +105 -105
  63. universal_mcp/applications/twitter/api_segments/usage_api.py +4 -4
  64. universal_mcp/applications/twitter/api_segments/users_api.py +136 -136
  65. universal_mcp/applications/twitter/app.py +6 -2
  66. universal_mcp/applications/unipile/app.py +90 -97
  67. universal_mcp/applications/whatsapp/app.py +53 -54
  68. universal_mcp/applications/whatsapp/audio.py +39 -35
  69. universal_mcp/applications/whatsapp/whatsapp.py +176 -154
  70. universal_mcp/applications/whatsapp_business/app.py +92 -92
  71. universal_mcp/applications/yahoo_finance/app.py +105 -63
  72. universal_mcp/applications/youtube/app.py +193 -196
  73. universal_mcp/applications/zenquotes/__init__.py +2 -0
  74. universal_mcp/applications/zenquotes/app.py +5 -5
  75. {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.23.dist-info}/METADATA +2 -1
  76. {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.23.dist-info}/RECORD +78 -74
  77. {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.23.dist-info}/WHEEL +0 -0
  78. {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.23.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
  """
@@ -1,7 +1,6 @@
1
1
  from typing import Any
2
2
 
3
3
  import httpx
4
-
5
4
  from universal_mcp.applications.application import APIApplication
6
5
  from universal_mcp.integrations import Integration
7
6
 
@@ -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
  """