universal-mcp-applications 0.1.17__py3-none-any.whl → 0.1.33__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 (143) hide show
  1. universal_mcp/applications/BEST_PRACTICES.md +166 -0
  2. universal_mcp/applications/ahrefs/README.md +3 -3
  3. universal_mcp/applications/airtable/README.md +3 -3
  4. universal_mcp/applications/airtable/app.py +0 -1
  5. universal_mcp/applications/apollo/app.py +0 -1
  6. universal_mcp/applications/asana/README.md +3 -3
  7. universal_mcp/applications/aws_s3/README.md +29 -0
  8. universal_mcp/applications/aws_s3/app.py +40 -39
  9. universal_mcp/applications/bill/README.md +249 -0
  10. universal_mcp/applications/browser_use/README.md +1 -0
  11. universal_mcp/applications/browser_use/__init__.py +0 -0
  12. universal_mcp/applications/browser_use/app.py +71 -0
  13. universal_mcp/applications/calendly/README.md +45 -45
  14. universal_mcp/applications/calendly/app.py +125 -125
  15. universal_mcp/applications/canva/README.md +35 -35
  16. universal_mcp/applications/canva/app.py +95 -99
  17. universal_mcp/applications/clickup/README.md +4 -4
  18. universal_mcp/applications/confluence/app.py +0 -1
  19. universal_mcp/applications/contentful/README.md +1 -2
  20. universal_mcp/applications/contentful/app.py +4 -5
  21. universal_mcp/applications/crustdata/README.md +3 -3
  22. universal_mcp/applications/domain_checker/README.md +2 -2
  23. universal_mcp/applications/domain_checker/app.py +11 -15
  24. universal_mcp/applications/e2b/README.md +4 -4
  25. universal_mcp/applications/e2b/app.py +4 -4
  26. universal_mcp/applications/elevenlabs/README.md +3 -77
  27. universal_mcp/applications/elevenlabs/app.py +18 -15
  28. universal_mcp/applications/exa/README.md +7 -7
  29. universal_mcp/applications/exa/app.py +17 -17
  30. universal_mcp/applications/falai/README.md +13 -12
  31. universal_mcp/applications/falai/app.py +34 -35
  32. universal_mcp/applications/figma/README.md +3 -3
  33. universal_mcp/applications/file_system/README.md +13 -0
  34. universal_mcp/applications/file_system/app.py +9 -9
  35. universal_mcp/applications/firecrawl/README.md +9 -9
  36. universal_mcp/applications/firecrawl/app.py +46 -46
  37. universal_mcp/applications/fireflies/README.md +14 -14
  38. universal_mcp/applications/fireflies/app.py +164 -57
  39. universal_mcp/applications/fpl/README.md +12 -12
  40. universal_mcp/applications/fpl/app.py +54 -55
  41. universal_mcp/applications/ghost_content/app.py +0 -1
  42. universal_mcp/applications/github/README.md +10 -10
  43. universal_mcp/applications/github/app.py +50 -52
  44. universal_mcp/applications/google_calendar/README.md +10 -10
  45. universal_mcp/applications/google_calendar/app.py +50 -49
  46. universal_mcp/applications/google_docs/README.md +14 -14
  47. universal_mcp/applications/google_docs/app.py +307 -233
  48. universal_mcp/applications/google_drive/README.md +54 -57
  49. universal_mcp/applications/google_drive/app.py +270 -261
  50. universal_mcp/applications/google_gemini/README.md +3 -14
  51. universal_mcp/applications/google_gemini/app.py +15 -18
  52. universal_mcp/applications/google_mail/README.md +20 -20
  53. universal_mcp/applications/google_mail/app.py +110 -109
  54. universal_mcp/applications/google_searchconsole/README.md +10 -10
  55. universal_mcp/applications/google_searchconsole/app.py +37 -37
  56. universal_mcp/applications/google_sheet/README.md +25 -25
  57. universal_mcp/applications/google_sheet/app.py +270 -266
  58. universal_mcp/applications/hashnode/README.md +6 -3
  59. universal_mcp/applications/hashnode/app.py +174 -25
  60. universal_mcp/applications/http_tools/README.md +5 -5
  61. universal_mcp/applications/http_tools/app.py +10 -11
  62. universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
  63. universal_mcp/applications/hubspot/api_segments/api_segment_base.py +54 -0
  64. universal_mcp/applications/hubspot/api_segments/crm_api.py +7337 -0
  65. universal_mcp/applications/hubspot/api_segments/marketing_api.py +1467 -0
  66. universal_mcp/applications/hubspot/app.py +2 -15
  67. universal_mcp/applications/jira/app.py +0 -1
  68. universal_mcp/applications/klaviyo/README.md +0 -36
  69. universal_mcp/applications/linkedin/README.md +18 -4
  70. universal_mcp/applications/linkedin/app.py +763 -162
  71. universal_mcp/applications/mailchimp/README.md +3 -3
  72. universal_mcp/applications/markitdown/app.py +10 -5
  73. universal_mcp/applications/ms_teams/README.md +31 -31
  74. universal_mcp/applications/ms_teams/app.py +151 -151
  75. universal_mcp/applications/neon/README.md +3 -3
  76. universal_mcp/applications/onedrive/README.md +24 -0
  77. universal_mcp/applications/onedrive/__init__.py +1 -0
  78. universal_mcp/applications/onedrive/app.py +338 -0
  79. universal_mcp/applications/openai/README.md +18 -17
  80. universal_mcp/applications/openai/app.py +40 -39
  81. universal_mcp/applications/outlook/README.md +9 -9
  82. universal_mcp/applications/outlook/app.py +307 -225
  83. universal_mcp/applications/perplexity/README.md +4 -4
  84. universal_mcp/applications/perplexity/app.py +4 -4
  85. universal_mcp/applications/posthog/README.md +128 -127
  86. universal_mcp/applications/reddit/README.md +21 -124
  87. universal_mcp/applications/reddit/app.py +51 -68
  88. universal_mcp/applications/resend/README.md +29 -29
  89. universal_mcp/applications/resend/app.py +116 -117
  90. universal_mcp/applications/rocketlane/app.py +0 -1
  91. universal_mcp/applications/scraper/README.md +7 -4
  92. universal_mcp/applications/scraper/__init__.py +1 -1
  93. universal_mcp/applications/scraper/app.py +341 -103
  94. universal_mcp/applications/semrush/README.md +3 -0
  95. universal_mcp/applications/serpapi/README.md +3 -3
  96. universal_mcp/applications/serpapi/app.py +14 -14
  97. universal_mcp/applications/sharepoint/README.md +19 -0
  98. universal_mcp/applications/sharepoint/app.py +285 -173
  99. universal_mcp/applications/shopify/app.py +0 -1
  100. universal_mcp/applications/shortcut/README.md +3 -3
  101. universal_mcp/applications/slack/README.md +23 -0
  102. universal_mcp/applications/slack/app.py +79 -48
  103. universal_mcp/applications/spotify/README.md +3 -3
  104. universal_mcp/applications/supabase/README.md +3 -3
  105. universal_mcp/applications/tavily/README.md +4 -4
  106. universal_mcp/applications/tavily/app.py +4 -4
  107. universal_mcp/applications/twilio/README.md +15 -0
  108. universal_mcp/applications/twitter/README.md +92 -89
  109. universal_mcp/applications/twitter/api_segments/compliance_api.py +13 -15
  110. universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +20 -20
  111. universal_mcp/applications/twitter/api_segments/dm_events_api.py +12 -12
  112. universal_mcp/applications/twitter/api_segments/likes_api.py +12 -12
  113. universal_mcp/applications/twitter/api_segments/lists_api.py +37 -39
  114. universal_mcp/applications/twitter/api_segments/spaces_api.py +24 -24
  115. universal_mcp/applications/twitter/api_segments/trends_api.py +4 -4
  116. universal_mcp/applications/twitter/api_segments/tweets_api.py +105 -105
  117. universal_mcp/applications/twitter/api_segments/usage_api.py +4 -4
  118. universal_mcp/applications/twitter/api_segments/users_api.py +136 -136
  119. universal_mcp/applications/twitter/app.py +15 -11
  120. universal_mcp/applications/whatsapp/README.md +12 -12
  121. universal_mcp/applications/whatsapp/app.py +66 -67
  122. universal_mcp/applications/whatsapp/audio.py +39 -35
  123. universal_mcp/applications/whatsapp/whatsapp.py +176 -154
  124. universal_mcp/applications/whatsapp_business/README.md +23 -23
  125. universal_mcp/applications/whatsapp_business/app.py +92 -92
  126. universal_mcp/applications/yahoo_finance/README.md +17 -0
  127. universal_mcp/applications/yahoo_finance/__init__.py +1 -0
  128. universal_mcp/applications/yahoo_finance/app.py +300 -0
  129. universal_mcp/applications/youtube/README.md +46 -46
  130. universal_mcp/applications/youtube/app.py +208 -195
  131. universal_mcp/applications/zenquotes/README.md +1 -1
  132. universal_mcp/applications/zenquotes/__init__.py +2 -0
  133. universal_mcp/applications/zenquotes/app.py +5 -5
  134. {universal_mcp_applications-0.1.17.dist-info → universal_mcp_applications-0.1.33.dist-info}/METADATA +5 -90
  135. {universal_mcp_applications-0.1.17.dist-info → universal_mcp_applications-0.1.33.dist-info}/RECORD +137 -128
  136. universal_mcp/applications/replicate/README.md +0 -18
  137. universal_mcp/applications/replicate/__init__.py +0 -1
  138. universal_mcp/applications/replicate/app.py +0 -493
  139. universal_mcp/applications/unipile/README.md +0 -28
  140. universal_mcp/applications/unipile/__init__.py +0 -1
  141. universal_mcp/applications/unipile/app.py +0 -827
  142. {universal_mcp_applications-0.1.17.dist-info → universal_mcp_applications-0.1.33.dist-info}/WHEEL +0 -0
  143. {universal_mcp_applications-0.1.17.dist-info → universal_mcp_applications-0.1.33.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,9 @@
1
1
  import base64
2
2
  from typing import Any, Literal
3
3
 
4
+ from universal_mcp.applications.application import APIApplication
5
+ from universal_mcp.integrations import Integration
6
+
4
7
  from openai import NOT_GIVEN, AsyncOpenAI, OpenAIError
5
8
  from openai._types import FileTypes as OpenAiFileTypes
6
9
  from openai.types import FilePurpose as OpenAiFilePurpose
@@ -15,8 +18,6 @@ from openai.types.audio_model import AudioModel as OpenAiAudioModel
15
18
  from openai.types.chat import ChatCompletionMessageParam
16
19
  from openai.types.file_object import FileObject
17
20
  from openai.types.image_model import ImageModel as OpenAiImageModel
18
- from universal_mcp.applications.application import APIApplication
19
- from universal_mcp.integrations import Integration
20
21
 
21
22
 
22
23
  class OpenaiApp(APIApplication):
@@ -62,7 +63,7 @@ class OpenaiApp(APIApplication):
62
63
  ) -> dict[str, Any] | str:
63
64
  """
64
65
  Generates a model response for a chat conversation. It supports both standard and streaming modes; if streaming, it internally aggregates response chunks into a single complete object, simplifying stream handling. Returns the completion data as a dictionary on success or an error string on failure.
65
-
66
+
66
67
  Args:
67
68
  messages: A list of messages comprising the conversation so far.
68
69
  model: ID of the model to use. Defaults to "gpt-4o".
@@ -79,12 +80,12 @@ class OpenaiApp(APIApplication):
79
80
  presence_penalty: Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far.
80
81
  stop: Up to 4 sequences where the API will stop generating further tokens.
81
82
  user: A unique identifier representing your end-user.
82
-
83
+
83
84
  Returns:
84
85
  A dictionary containing the chat completion response on success,
85
86
  or a string containing an error message on failure.
86
87
  If stream=True, usage data in the response will be None.
87
-
88
+
88
89
  Tags:
89
90
  chat, llm, important
90
91
  """
@@ -164,16 +165,16 @@ class OpenaiApp(APIApplication):
164
165
  ) -> dict[str, Any] | str:
165
166
  """
166
167
  Uploads a file to the user's OpenAI account for use across various endpoints like 'assistants'. It accepts a file path or object and a purpose string, returning a dictionary with the created file object's details upon success.
167
-
168
+
168
169
  Args:
169
170
  file: The File object (not file name) or path to be uploaded.
170
171
  Can be bytes, a PathLike object, or a file-like object.
171
172
  purpose: The intended purpose of the uploaded file (e.g., 'fine-tune', 'assistants').
172
-
173
+
173
174
  Returns:
174
175
  A dictionary containing the file object details on success,
175
176
  or a string containing an error message on failure.
176
-
177
+
177
178
  Tags:
178
179
  files, upload, storage
179
180
  """
@@ -195,17 +196,17 @@ class OpenaiApp(APIApplication):
195
196
  ) -> dict[str, Any] | str:
196
197
  """
197
198
  Retrieves a paginated list of files uploaded to the OpenAI account. Allows filtering by purpose and controlling the output with limit, `after` cursor, and sort order parameters to efficiently navigate through the file collection.
198
-
199
+
199
200
  Args:
200
201
  purpose: Only return files with the given purpose.
201
202
  limit: A limit on the number of objects to be returned.
202
203
  after: A cursor for use in pagination.
203
204
  order: Sort order by the `created_at` timestamp.
204
-
205
+
205
206
  Returns:
206
207
  A dictionary representing a page of file objects on success,
207
208
  or a string containing an error message on failure.
208
-
209
+
209
210
  Tags:
210
211
  files, list, storage
211
212
  """
@@ -231,14 +232,14 @@ class OpenaiApp(APIApplication):
231
232
  async def retrieve_file_metadata(self, file_id: str) -> dict[str, Any] | str:
232
233
  """
233
234
  Retrieves the metadata (e.g., purpose, creation date) for a specific file from the OpenAI account using its ID. Unlike `retrieve_file_content`, this function does not download the file's contents. It returns a dictionary with file details on success or an error string on failure.
234
-
235
+
235
236
  Args:
236
237
  file_id: The ID of the file to retrieve.
237
-
238
+
238
239
  Returns:
239
240
  A dictionary containing the file object details on success,
240
241
  or a string containing an error message on failure.
241
-
242
+
242
243
  Tags:
243
244
  files, retrieve, storage
244
245
  """
@@ -256,14 +257,14 @@ class OpenaiApp(APIApplication):
256
257
  async def delete_file(self, file_id: str) -> dict[str, Any] | str:
257
258
  """
258
259
  Permanently deletes a file from the user's OpenAI account using its unique file ID. This action is irreversible. It returns a dictionary confirming the deletion on success or an error message string on failure. This is the 'delete' operation in the file management lifecycle.
259
-
260
+
260
261
  Args:
261
262
  file_id: The ID of the file to delete.
262
-
263
+
263
264
  Returns:
264
265
  A dictionary containing the deletion status on success,
265
266
  or a string containing an error message on failure.
266
-
267
+
267
268
  Tags:
268
269
  files, delete, storage
269
270
  """
@@ -279,14 +280,14 @@ class OpenaiApp(APIApplication):
279
280
  async def retrieve_file_content(self, file_id: str) -> dict[str, Any] | str:
280
281
  """
281
282
  Retrieves a file's content from OpenAI using its ID. It returns plain text for common text formats (e.g., JSON, CSV). For binary or undecodable files, it returns a dictionary with base64-encoded data, differentiating it from `retrieve_file` which only fetches metadata.
282
-
283
+
283
284
  Args:
284
285
  file_id: The ID of the file whose content to retrieve.
285
-
286
+
286
287
  Returns:
287
288
  The file content as a string if text, a dictionary with base64 encoded
288
289
  content if binary, or an error message string on failure.
289
-
290
+
290
291
  Tags:
291
292
  files, content, download
292
293
  """
@@ -347,7 +348,7 @@ class OpenaiApp(APIApplication):
347
348
  ) -> dict[str, Any] | str:
348
349
  """
349
350
  Generates new images from a textual prompt using OpenAI's DALL-E models. It allows customization of parameters like image size, quality, style, and response format (URL or base64 JSON). Unlike other image functions in this class, it creates images entirely from scratch based on text.
350
-
351
+
351
352
  Args:
352
353
  prompt: A text description of the desired image(s).
353
354
  model: The model to use for image generation. Defaults to "dall-e-3".
@@ -364,11 +365,11 @@ class OpenaiApp(APIApplication):
364
365
  For "dall-e-3": "1024x1024", "1792x1024", or "1024x1792".
365
366
  style: The style of the generated images ("vivid" or "natural"). Only for "dall-e-3".
366
367
  user: A unique identifier representing your end-user.
367
-
368
+
368
369
  Returns:
369
370
  A dictionary containing the image generation response on success,
370
371
  or a string containing an error message on failure.
371
-
372
+
372
373
  Tags:
373
374
  images, generate, dalle, important
374
375
  """
@@ -416,7 +417,7 @@ class OpenaiApp(APIApplication):
416
417
  ) -> dict[str, Any] | str:
417
418
  """
418
419
  Modifies a source image using the DALL-E 2 model based on a text prompt. An optional mask can be supplied to specify the exact area for editing. This function is distinct from generating images from scratch (`generate_image`) or creating simple variations (`create_image_variation`).
419
-
420
+
420
421
  Args:
421
422
  image: The image to edit. Must be a valid PNG file, less than 4MB, and square.
422
423
  prompt: A text description of the desired image(s).
@@ -427,11 +428,11 @@ class OpenaiApp(APIApplication):
427
428
  response_format: The format of the returned images ("url" or "b64_json"). Defaults to "url".
428
429
  size: The size of the generated images. Must be one of "256x256", "512x512", or "1024x1024".
429
430
  user: A unique identifier representing your end-user.
430
-
431
+
431
432
  Returns:
432
433
  A dictionary containing the image edit response on success,
433
434
  or a string containing an error message on failure.
434
-
435
+
435
436
  Tags:
436
437
  images, edit, dalle
437
438
  """
@@ -469,7 +470,7 @@ class OpenaiApp(APIApplication):
469
470
  ) -> dict[str, Any] | str:
470
471
  """
471
472
  Generates one or more variations of a provided image using the OpenAI API, specifically the DALL-E 2 model. It allows customization of the number, size, and response format of the resulting images. Returns a dictionary with image data on success or an error string on failure.
472
-
473
+
473
474
  Args:
474
475
  image: The image to use as the basis for the variation(s). Must be a valid PNG file.
475
476
  model: The model to use. Defaults to "dall-e-2", which is currently the only
@@ -478,11 +479,11 @@ class OpenaiApp(APIApplication):
478
479
  response_format: The format of the returned images ("url" or "b64_json"). Defaults to "url".
479
480
  size: The size of the generated images. Must be one of "256x256", "512x512", or "1024x1024".
480
481
  user: A unique identifier representing your end-user.
481
-
482
+
482
483
  Returns:
483
484
  A dictionary containing the image variation response on success,
484
485
  or a string containing an error message on failure.
485
-
486
+
486
487
  Tags:
487
488
  images, variation, dalle
488
489
  """
@@ -522,7 +523,7 @@ class OpenaiApp(APIApplication):
522
523
  ) -> dict[str, Any] | str:
523
524
  """
524
525
  Transcribes an audio file into text in its original language using models like Whisper or GPT-4o. It supports multiple response formats and internally aggregates streaming data into a final object. This differs from `create_translation`, which translates audio specifically into English text.
525
-
526
+
526
527
  Args:
527
528
  file: The audio file object (not file name) to transcribe.
528
529
  model: ID of the model to use (e.g., "whisper-1", "gpt-4o-transcribe").
@@ -538,12 +539,12 @@ class OpenaiApp(APIApplication):
538
539
  Only works with response_format="json" and gpt-4o models.
539
540
  stream: If True, streams the response. The method will aggregate the stream
540
541
  into a final response object. Streaming is not supported for "whisper-1".
541
-
542
+
542
543
  Returns:
543
544
  A dictionary containing the transcription or a string, depending on `response_format`.
544
545
  If `stream` is True, an aggregated response dictionary.
545
546
  Returns an error message string on failure.
546
-
547
+
547
548
  Tags:
548
549
  audio, transcription, speech-to-text, important
549
550
  """
@@ -615,18 +616,18 @@ class OpenaiApp(APIApplication):
615
616
  ) -> dict[str, Any] | str:
616
617
  """
617
618
  Translates audio from any supported language into English text using OpenAI's API. Unlike `create_transcription`, which converts audio to text in its original language, this function's output is always English. It supports various response formats like JSON, text, or SRT for the translated content.
618
-
619
+
619
620
  Args:
620
621
  file: The audio file object (not file name) to translate.
621
622
  model: ID of the model to use (currently, only "whisper-1" is supported).
622
623
  prompt: Optional text to guide the model's style (should be in English).
623
624
  response_format: The format of the translated text.
624
625
  temperature: Sampling temperature between 0 and 1.
625
-
626
+
626
627
  Returns:
627
628
  A dictionary containing the translation or a string, depending on `response_format`.
628
629
  Returns an error message string on failure.
629
-
630
+
630
631
  Tags:
631
632
  audio, translation, speech-to-text
632
633
  """
@@ -681,7 +682,7 @@ class OpenaiApp(APIApplication):
681
682
  ) -> dict[str, Any] | str:
682
683
  """
683
684
  Generates audio from input text using a specified TTS model and voice. This text-to-speech function allows customizing audio format and speed. On success, it returns a dictionary containing the base64-encoded audio content and its corresponding MIME type, or an error string on failure.
684
-
685
+
685
686
  Args:
686
687
  input_text: The text to generate audio for (max 4096 characters).
687
688
  model: The TTS model to use (e.g., "tts-1", "tts-1-hd", "gpt-4o-mini-tts").
@@ -689,12 +690,12 @@ class OpenaiApp(APIApplication):
689
690
  response_format: The format of the audio ("mp3", "opus", "aac", "flac", "wav", "pcm"). Defaults to "mp3".
690
691
  speed: Speed of the generated audio (0.25 to 4.0). Defaults to 1.0.
691
692
  instructions: Control voice with additional instructions (not for tts-1/tts-1-hd).
692
-
693
-
693
+
694
+
694
695
  Returns:
695
696
  A dictionary containing the base64 encoded audio content and content type,
696
697
  or an error message string on failure.
697
-
698
+
698
699
  Tags:
699
700
  audio, speech, text-to-speech, tts, important
700
701
  """
@@ -9,12 +9,12 @@ This is automatically generated from OpenAPI schema for the OutlookApp API.
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `users_message_reply` | Replies to a specific message for a user using the POST method, accepting JSON content in the request body and returning status codes indicating success or error. |
13
- | `user_send_mail` | Sends an email on behalf of the specified user, accepting the email details as JSON in the request body and returning a 204 No Content response on success. |
14
- | `user_get_mail_folder` | Retrieves a specific mail folder for a specified user using optional query parameters to include hidden folders or select/expand properties. |
15
- | `user_list_message` | Retrieves a list of messages for a user, allowing optional filtering and sorting of results based on parameters such as includeHiddenMessages, search, filter, top, skip, orderby, select, and expand. |
16
- | `user_get_message` | Retrieves a specific message for a user, optionally including hidden messages, selecting specific fields, or expanding related data. |
17
- | `user_delete_message` | Deletes a specific message for a given user using the DELETE method and optional If-Match header for conditional requests. |
18
- | `user_message_list_attachment` | Retrieves attachments associated with a specified user's message, supporting filtering, pagination, and field selection via query parameters. |
19
- | `get_user_id` | Retrieves the current user. |
20
- | `get_from_url` | Makes a GET request to a full @odata.nextLink or @odata.deltaLink URL. |
12
+ | `reply_to_message` | Replies to an email using its message ID, with either a simple comment or a full message object including attachments. Unlike `send_mail`, which creates a new email, this function targets an existing message. It defaults to the current user if no user ID is specified. |
13
+ | `send_mail` | Sends a new email on behalf of a specified or current user, using a dictionary for content like recipients and subject. Unlike `reply_to_message`, which replies to an existing message, this function composes and sends an entirely new email from scratch. |
14
+ | `get_mail_folder` | Retrieves a specific mail folder's metadata by its ID for a given user. The response can be customized to include hidden folders or select specific properties. Unlike `list_user_messages`, this function fetches folder details, not the emails contained within it. |
15
+ | `list_user_messages` | Retrieves a list of messages from a user's mailbox. This function supports powerful querying using optional parameters for filtering, searching, sorting, and pagination, unlike `get_user_message`, which fetches a single email by its ID. |
16
+ | `get_user_message` | Retrieves a specific email message by its ID for a given user, with options to select specific fields or expand related data. Unlike `list_user_messages`, which fetches a collection of emails with advanced filtering, this function is designed to retrieve a single, known message. |
17
+ | `user_delete_message` | Permanently deletes a specific email, identified by `message_id`, from a user's mailbox. If `user_id` is not provided, it defaults to the current authenticated user. Unlike retrieval functions such as `get_user_message`, this performs a destructive action to remove the specified email from Outlook. |
18
+ | `list_message_attachments` | Retrieves attachments for a specific email message, identified by its ID. Supports advanced querying for filtering, sorting, and pagination, allowing users to select specific fields to return in the result set, focusing only on attachments rather than the full message content. |
19
+ | `get_current_user_profile` | Fetches the `userPrincipalName` for the currently authenticated user from the `/me` endpoint. This internal helper is used by other methods to automatically obtain the user's ID for API calls when a `user_id` is not explicitly provided. |
20
+ | `get_next_page` | Executes a GET request for a full URL, typically the `@odata.nextLink` from a previous paginated API response. It simplifies retrieving subsequent pages of data from list functions by handling URL validation and parsing before fetching the results for the next page. |