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
@@ -9,17 +9,6 @@ This is automatically generated from OpenAPI schema for the GoogleGeminiApp API.
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `fetch_model` | Retrieves the configuration details of current model via a GET request. |
13
- | `fetch_models` | Retrieves a paginated list of available models, supporting page size and token parameters for result navigation. |
14
- | `text_only_input` | Generates content using the Gemini 1.5 Flash model via POST request, |
15
- | `generate_atext_stream` | Generates a streaming response from the Gemini 1.5 Flash model for multimodal input content. |
16
- | `resumable_upload_request` | Initiates a file upload by sending file metadata. |
17
- | `prompt_document` | Generates content using the Gemini model with document context. |
18
- | `text_tokens` | Calculates the number of tokens and billable characters for input content using a gemini-2.0-flash. |
19
- | `fetch_tuned_models` | Retrieves a list of tuned models at the specified page size using the GET method. |
20
- | `create_atuned_model` | Creates a tuned model using the "POST" method at the "/v1beta/tunedModels" endpoint and returns a response upon successful creation. |
21
- | `prompt_the_tuned_model` | Generates content using a specified tuned model defined at path "/v1beta/{tunedModel}:generateContent" by sending a POST request. |
22
- | `delete_tuned_model` | Deletes a specified tuned model and returns a success status upon removal. |
23
- | `generate_embeddings` | Generates a text embedding vector from input text using the specified Gemini Embedding model, allowing for semantic analysis and comparison of textual content. |
24
- | `batch_embeddings` | Generates batch embeddings for a list of text inputs using the "gemini-embedding-exp-03-07" model via a POST request to the "/v1beta/models/text-embedding-004:batchEmbedContents" endpoint. |
25
- | `discovery_document` | Retrieves discovery metadata for REST APIs, including available endpoints and parameters, based on the specified version. |
12
+ | `generate_text` | Generates text using the Google Gemini model based on a given prompt. |
13
+ | `generate_image` | Generates an image based on a text prompt and an optional reference image using the Google Gemini model. |
14
+ | `generate_audio` | Generates audio from a given text prompt using the Google Gemini model's Text-to-Speech (TTS) capabilities. |
@@ -7,11 +7,8 @@ from typing import Annotated
7
7
 
8
8
  from google import genai
9
9
  from google.genai import types
10
- from loguru import logger
11
10
  from PIL import Image
12
-
13
11
  from universal_mcp.applications.application import APIApplication
14
- from universal_mcp.applications.file_system.app import FileSystemApp
15
12
  from universal_mcp.integrations import Integration
16
13
 
17
14
 
@@ -65,9 +62,9 @@ class GoogleGeminiApp(APIApplication):
65
62
  async def generate_image(
66
63
  self,
67
64
  prompt: Annotated[str, "The prompt to generate image from"],
68
- image: Annotated[str, "The reference image path"] | None = None,
65
+ images: Annotated[list[str], "The reference image URLs"] | None = None,
69
66
  model: str = "gemini-2.5-flash-image-preview",
70
- ) -> list:
67
+ ) -> dict:
71
68
  """
72
69
  Generates an image based on a text prompt and an optional reference image using the Google Gemini model.
73
70
  This tool is ideal for creating visual content or modifying existing images based on natural language descriptions.
@@ -75,7 +72,7 @@ class GoogleGeminiApp(APIApplication):
75
72
 
76
73
  Args:
77
74
  prompt (str): The descriptive text prompt to guide the image generation. For example: "A futuristic city at sunset with flying cars."
78
- image (str, optional): An optional URL or local file path to a reference image. This image will be used as a basis for the generation.
75
+ images (list[str], optional): An optional list of URLs to reference images. These images will be used as a basis for the generation.
79
76
  model (str, optional): The Gemini model to use for image generation. Defaults to "gemini-2.5-flash-image-preview".
80
77
 
81
78
  Returns:
@@ -96,16 +93,17 @@ class GoogleGeminiApp(APIApplication):
96
93
  """
97
94
  # The Gemini API is synchronous, so run in a thread
98
95
  contents = [prompt]
99
- if image:
100
- if image.startswith(("http://", "https://")):
101
- import requests
102
-
103
- response = requests.get(image)
104
- response.raise_for_status()
105
- image = Image.open(io.BytesIO(response.content))
106
- else:
107
- image = Image.open(image)
108
- contents.append(image)
96
+ if images:
97
+ for image in images:
98
+ if image.startswith(("http://", "https://")):
99
+ import requests
100
+
101
+ response = requests.get(image)
102
+ response.raise_for_status()
103
+ image = Image.open(io.BytesIO(response.content))
104
+ else:
105
+ image = Image.open(image)
106
+ contents.append(image)
109
107
  response = self.genai_client.models.generate_content(
110
108
  model=model,
111
109
  contents=contents,
@@ -215,10 +213,9 @@ class GoogleGeminiApp(APIApplication):
215
213
 
216
214
  async def test_google_gemini():
217
215
  app = GoogleGeminiApp()
218
- result = await app.generate_image(
216
+ await app.generate_image(
219
217
  "A beautiful women potrait with red green hair color"
220
218
  )
221
- print(result)
222
219
 
223
220
 
224
221
  if __name__ == "__main__":
@@ -9,23 +9,23 @@ This is automatically generated from OpenAPI schema for the GoogleMailApp API.
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `send_email` | Sends an email using the Gmail API and returns a confirmation or error message. |
13
- | `create_draft` | Creates a draft email message in Gmail using the Gmail API and returns a confirmation status. |
14
- | `send_draft` | Sends an existing draft email using the Gmail API and returns a confirmation message. |
15
- | `get_draft` | Retrieves and formats a specific draft email from Gmail by its ID |
16
- | `list_drafts` | Retrieves and formats a list of email drafts from the user's Gmail mailbox with optional filtering and pagination. |
17
- | `get_message` | Retrieves and formats a specific email message from Gmail API by its ID, including sender, recipient, date, subject, and full message body content. |
18
- | `list_messages` | Retrieves and formats a list of messages from the user's Gmail mailbox with optional filtering and pagination support. |
19
- | `list_labels` | Retrieves and formats a list of all labels (both system and user-created) from the user's Gmail account, organizing them by type and sorting them alphabetically. |
20
- | `create_label` | Creates a new Gmail label with specified visibility settings and returns creation status details. |
21
- | `get_profile` | Retrieves and formats the user's Gmail profile information including email address, message count, thread count, and history ID. |
22
- | `update_drafts` | Updates an existing Gmail draft with new message content and metadata. |
23
- | `trash_messsages` | Moves a message to the trash folder (acts like delete functionality). |
24
- | `untrash_messages` | Moves a message out of the trash, effectively undoing a trash action and restoring the message to the user's mailbox. |
25
- | `get_attachments` | Retrieves the actual file content of a specific attachment from a Gmail message |
26
- | `update_labels` | Update an existing Gmail label's properties such as name, color, or visibility. |
27
- | `delete_labels` | Delete a Gmail label by its ID. |
28
- | `get_filters` | Fetch Gmail filter configuration and rules by filter ID |
29
- | `delete_filters` | Remove Gmail filter and its associated automation rules |
30
- | `list_filters` | Retrieve all Gmail filters and their automation settings |
31
- | `create_filters` | Set up new Gmail filter with criteria and automated actions |
12
+ | `send_email` | Composes and immediately sends an email message via the Gmail API. It can function as a reply within an existing conversation if a `thread_id` is provided. This action is distinct from `send_draft`, which sends a previously saved draft message, or `create_draft`, which only saves an email. |
13
+ | `create_draft` | Saves a new email draft in Gmail with a specified recipient, subject, and body. An optional thread ID can create the draft as a reply within an existing conversation, distinguishing it from `send_email`, which sends immediately. |
14
+ | `send_draft` | Sends a pre-existing Gmail draft identified by its unique ID. It posts to the `/drafts/send` endpoint, converting a saved draft into a sent message. This function acts on drafts from `create_draft` and differs from `send_email`, which composes and sends an email in one step. |
15
+ | `get_draft` | Retrieves a specific Gmail draft by its unique ID. This function allows specifying the output format (e.g., full, raw) to control the response detail. Unlike `list_drafts`, it fetches a single, known draft rather than a collection of multiple drafts. |
16
+ | `list_drafts` | Fetches a list of email drafts, allowing filtering by a search query and limiting results. It can optionally include drafts from spam and trash, returning a collection of draft objects. This is distinct from `get_draft`, which retrieves only a single, specific draft by its ID. |
17
+ | `get_message_details` | Retrieves a specific email from Gmail by its ID. It parses the API response to extract and format key details—including sender, subject, body, and attachments—into a structured dictionary. This function provides detailed data for a single message, distinguishing it from `list_messages` which fetches multiple messages. |
18
+ | `list_messages` | Fetches a paginated list of detailed email messages using optional search queries. It concurrently retrieves full content (sender, subject, body) for each message, returning the results and a pagination token. This differs from `get_message_details`, which fetches only a single message. |
19
+ | `list_labels` | Fetches a complete list of all available labels from the user's Gmail account via the API. It retrieves both system-defined (e.g., INBOX) and user-created labels, returning their names and IDs, complementing management functions like `create_label` and `update_label`. |
20
+ | `create_label` | Creates a new Gmail label with a specified name, hardcoding its visibility to ensure it appears in both label and message lists. This function complements `update_label` and `delete_label` by adding new organizational tags to the user's account via the API. |
21
+ | `get_profile` | Retrieves the authenticated user's Gmail profile from the API. The profile includes the user's email address, total message and thread counts, and the mailbox's history ID, offering a high-level summary of the account's state. |
22
+ | `update_draft` | Replaces the entire content of a specific Gmail draft, identified by its ID, with a new message object. This allows complete modification of the recipient, subject, and body, serving as the primary "edit" function for drafts created via `create_draft`. |
23
+ | `trash_message` | Moves a specific Gmail message to the trash folder by its unique ID. This action performs a soft delete and is the direct counterpart to `untrash_message`, which restores a message. It requires both a user ID and the specific message ID to make the API call. |
24
+ | `untrash_message` | Restores a specific Gmail message from the trash to the user's mailbox, identified by its unique ID. It serves as the direct counterpart to `trash_message`, undoing the deletion action and making the message visible again in the user's account via an API call. |
25
+ | `get_attachment` | Fetches the raw, base64-encoded content of a specific email attachment using its unique ID. It requires the parent message and user IDs for a targeted API request, returning the file's size and data for download or processing, unlike functions that only list attachment metadata. |
26
+ | `update_label` | Updates an existing Gmail label's properties, such as its name, color, or visibility, using its unique ID. This modification function is distinct from `create_label` and `delete_label`, returning the full, updated label resource from the API upon successful completion. |
27
+ | `delete_label` | Permanently removes a specific Gmail label from a user's account, identified by its unique ID. This function performs an irreversible deletion via an API call, requiring both the `userId` and the label `id`. It is the destructive counterpart to `create_label` and `update_label`. |
28
+ | `get_filter` | Fetches a single Gmail filter's configuration by its unique ID for a specified user. It returns the filter’s criteria (e.g., sender) and actions (e.g., add label). This differs from `get_all_filters`, which retrieves a complete list of all filters for the user. |
29
+ | `delete_filter` | Permanently removes a specific Gmail filter, identified by its unique ID, from a user's account. This action deletes the filter's criteria and all associated automation rules, making it the destructive counterpart to `create_filter` and `get_filter`. |
30
+ | `get_all_filters` | Retrieves all configured email filters for a specified Gmail user ID. It fetches a list of a user's filters, including their matching criteria and automated actions, distinguishing it from `get_filter`, which retrieves only a single filter. |
31
+ | `create_filter` | Creates a new automated email filter in Gmail for a specified user. It requires defining matching criteria (e.g., sender, subject) and an action (e.g., add label). This function adds new rules, distinguishing it from `get_all_filters` and `delete_filter` which manage existing ones. |