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,5 +9,5 @@ This is automatically generated from OpenAPI schema for the DomainCheckerApp API
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `check_domain_tool` | Checks if a domain is available for registration by querying DNS records and RDAP data. |
13
- | `check_tlds_tool` | Checks a keyword across multiple top-level domains (TLDs) to find available domain names. |
12
+ | `check_domain_registration` | Determines a domain's availability by querying DNS and RDAP servers. For registered domains, it returns details like registrar and key dates. This function provides a comprehensive analysis for a single, fully qualified domain name, unlike `check_keyword_across_tlds_tool` which checks a keyword across multiple domains. |
13
+ | `find_available_domains_for_keyword` | Checks a keyword's availability across a predefined list of popular TLDs. Using DNS and RDAP lookups, it generates a summary report of available and taken domains. This bulk-check differs from `check_domain_registration`, which deeply analyzes a single, fully-qualified domain. |
@@ -4,7 +4,6 @@ from typing import Any
4
4
 
5
5
  import dns.resolver
6
6
  import requests
7
-
8
7
  from universal_mcp.applications.application import APIApplication
9
8
  from universal_mcp.integrations import Integration
10
9
 
@@ -94,15 +93,15 @@ class DomainCheckerApp(APIApplication):
94
93
  async def check_domain_registration(self, domain: str) -> dict[str, Any]:
95
94
  """
96
95
  Determines a domain's availability by querying DNS and RDAP servers. For registered domains, it returns details like registrar and key dates. This function provides a comprehensive analysis for a single, fully qualified domain name, unlike `check_keyword_across_tlds_tool` which checks a keyword across multiple domains.
97
-
96
+
98
97
  This method performs a comprehensive domain availability check by first checking DNS records
99
98
  and then querying RDAP (Registration Data Access Protocol) servers for detailed registration
100
99
  information. It provides detailed information about registered domains including registrar,
101
100
  registration date, and expiration date.
102
-
101
+
103
102
  Args:
104
103
  domain: String representing the domain name to check (e.g., "example.com")
105
-
104
+
106
105
  Returns:
107
106
  Dictionary containing domain availability information with the following keys:
108
107
  - domain: The domain name that was checked
@@ -113,12 +112,12 @@ class DomainCheckerApp(APIApplication):
113
112
  - has_dns: Boolean indicating if DNS records exist
114
113
  - rdap_data_available: Boolean indicating if RDAP data was retrieved
115
114
  - note: Additional information when needed
116
-
115
+
117
116
  Raises:
118
117
  DNSException: When DNS resolution fails due to network issues or invalid domain format
119
118
  RequestException: When RDAP queries fail due to network issues or server errors
120
119
  ValueError: When the domain parameter is empty or contains invalid characters
121
-
120
+
122
121
  Tags:
123
122
  domain, availability, registration, dns, rdap, important
124
123
  """
@@ -206,15 +205,15 @@ class DomainCheckerApp(APIApplication):
206
205
  async def find_available_domains_for_keyword(self, keyword: str) -> dict[str, Any]:
207
206
  """
208
207
  Checks a keyword's availability across a predefined list of popular TLDs. Using DNS and RDAP lookups, it generates a summary report of available and taken domains. This bulk-check differs from `check_domain_registration`, which deeply analyzes a single, fully-qualified domain.
209
-
208
+
210
209
  This method systematically checks a given keyword across 14 popular TLDs including .com, .net,
211
210
  .org, .io, .co, .app, .dev, .ai, .me, .info, .xyz, .online, .site, and .tech. It performs
212
211
  DNS lookups and RDAP queries to determine domain availability and provides a comprehensive
213
212
  report of available and taken domains.
214
-
213
+
215
214
  Args:
216
215
  keyword: String representing the keyword to check across TLDs (e.g., "myapp")
217
-
216
+
218
217
  Returns:
219
218
  Dictionary containing TLD availability information with the following keys:
220
219
  - keyword: The keyword that was checked
@@ -224,12 +223,12 @@ class DomainCheckerApp(APIApplication):
224
223
  - available_domains: List of available domain names
225
224
  - taken_domains: List of taken domain names
226
225
  - tlds_checked_list: Complete list of TLDs that were checked
227
-
226
+
228
227
  Raises:
229
228
  DNSException: When DNS resolution fails due to network issues or invalid domain format
230
229
  RequestException: When RDAP queries fail due to network issues or server errors
231
230
  ValueError: When the keyword parameter is empty or contains invalid characters
232
-
231
+
233
232
  Tags:
234
233
  tld, keyword, domain-search, availability, bulk-check, important
235
234
  """
@@ -267,7 +266,4 @@ class DomainCheckerApp(APIApplication):
267
266
  """
268
267
  Lists the available tools (methods) for this application.
269
268
  """
270
- return [
271
- self.check_domain_registration,
272
- self.find_available_domains_for_keyword
273
- ]
269
+ return [self.check_domain_registration, self.find_available_domains_for_keyword]
@@ -1,12 +1,12 @@
1
- # E2b MCP Server
1
+ # E2bApp MCP Server
2
2
 
3
- An MCP Server for the E2b API.
3
+ An MCP Server for the E2bApp API.
4
4
 
5
5
  ## 🛠️ Tool List
6
6
 
7
- This is automatically generated from OpenAPI schema for the E2b API.
7
+ This is automatically generated from OpenAPI schema for the E2bApp API.
8
8
 
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `execute_python_code` | Executes Python code in a sandbox environment and returns the formatted output |
12
+ | `execute_python_code` | Executes a Python code string in a secure E2B sandbox. It authenticates using the configured API key, runs the code, and returns a formatted string containing the execution's output (stdout/stderr). It raises specific exceptions for authorization failures or general execution issues. |
@@ -131,19 +131,19 @@ class E2bApp(APIApplication):
131
131
  ) -> str:
132
132
  """
133
133
  Executes a Python code string in a secure E2B sandbox. It authenticates using the configured API key, runs the code, and returns a formatted string containing the execution's output (stdout/stderr). It raises specific exceptions for authorization failures or general execution issues.
134
-
134
+
135
135
  Args:
136
136
  code: String containing the Python code to be executed in the sandbox.
137
-
137
+
138
138
  Returns:
139
139
  A string containing the formatted execution output/logs from running the code.
140
-
140
+
141
141
  Raises:
142
142
  ToolError: When there are issues with sandbox initialization or code execution,
143
143
  or if the E2B SDK is not installed.
144
144
  NotAuthorizedError: When API key authentication fails during sandbox setup.
145
145
  ValueError: When provided code string is empty or invalid.
146
-
146
+
147
147
  Tags:
148
148
  execute, sandbox, code-execution, security, important
149
149
  """
@@ -9,80 +9,6 @@ This is automatically generated from OpenAPI schema for the ElevenlabsApp API.
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `get_generated_items` | Retrieves historical data based on specified parameters, including page size and voice ID, using the "GET" method at the "/v1/history" endpoint. |
13
- | `get_history_item_by_id` | Retrieves a specific history item by its identifier using the API defined at "/v1/history/{history_item_id}" with the GET method. |
14
- | `delete_history_item` | Deletes a specific history item identified by its ID using the DELETE method. |
15
- | `get_audio_from_history_item` | Retrieves audio data for a specific history item identified by `{history_item_id}` using the `GET` method at the `/v1/history/{history_item_id}/audio` endpoint. |
16
- | `download_history_items` | Initiates a historical data download process and returns a success status upon completion. |
17
- | `delete_sample` | Deletes a specific voice sample identified by the `sample_id` from a voice with the given `voice_id` using the DELETE method. |
18
- | `get_audio_from_sample` | Retrieves the audio file for a specific sample associated with a given voice using the specified voice_id and sample_id. |
19
- | `convert` | Converts text into speech using a specified voice, allowing for optimization of streaming latency and selection of output format. |
20
- | `text_to_speech_with_timestamps` | Generates speech from text with precise character or word-level timing information using the specified voice, supporting audio-text synchronization through timestamps. |
21
- | `convert_as_stream` | Converts text to speech stream using the specified voice ID with configurable latency and output format. |
22
- | `stream_text_with_timestamps` | Converts text to speech using the specified voice ID, streaming the audio output with timestamps. |
23
- | `voice_generation_parameters` | Retrieves the parameters required for generating voice using the specified API endpoint. |
24
- | `generate_arandom_voice` | Generates an audio file by converting text into speech using a specified voice, allowing for customizable voice selection and text input. |
25
- | `create_voice_model` | Generates a custom voice using the provided parameters via the "/v1/voice-generation/create-voice" endpoint by sending a POST request, allowing users to create unique voice models. |
26
- | `create_previews` | Generates a voice preview from a given text prompt using the ElevenLabs API. |
27
- | `create_voice_from_preview` | Creates a new voice entry in the voice library using a generated preview ID and returns voice details. |
28
- | `get_user_subscription_info` | Retrieves the user's subscription details from the API. |
29
- | `get_user_info` | Retrieves user information from the API. |
30
- | `get_voices` | Retrieves a list of voices using the "GET" method at the "/v1/voices" API endpoint. |
31
- | `get_default_voice_settings` | Retrieves the default voice settings using the "GET" method at the "/v1/voices/settings/default" endpoint. |
32
- | `get_voice_settings` | Retrieves voice settings for a specific voice identified by `{voice_id}` using the "GET" method, returning the current configuration for that voice. |
33
- | `get_voice` | Retrieves the details of a specific voice by its ID using the "GET" method at the "/v1/voices/{voice_id}" endpoint. |
34
- | `delete_voice` | Deletes a voice with the specified ID using the DELETE method at the "/v1/voices/{voice_id}" endpoint. |
35
- | `edit_voice_settings` | Updates voice settings for a specified voice ID and returns a success status. |
36
- | `add_voice` | Adds a new voice entry to the voices collection using the provided data. |
37
- | `edit_voice` | Updates the specified voice by ID using a POST request and returns a success status upon completion. |
38
- | `add_sharing_voice` | Adds a voice associated with a public user ID and voice ID using the specified API endpoint. |
39
- | `get_shared_voices` | Retrieves a list of shared voices filtered by parameters like gender and language, with pagination support via page_size. |
40
- | `get_similar_library_voices` | Generates a list of similar voices using the POST method at the "/v1/similar-voices" endpoint. |
41
- | `get_aprofile_page` | Retrieves a unified customer profile by handle and returns the associated attributes, identifiers, and traits. |
42
- | `get_projects` | Retrieves a list of projects using the API defined at the "/v1/projects" endpoint via the GET method. |
43
- | `add_project` | Creates a new project and returns a status message. |
44
- | `get_project_by_id` | Retrieves information for a specific project identified by `{project_id}` using the API endpoint at "/v1/projects/{project_id}" via the GET method. |
45
- | `edit_basic_project_info` | Creates a new project resource by sending data to the specified project identifier using the POST method at the "/v1/projects/{project_id}" endpoint. |
46
- | `delete_project` | Deletes the specified project and returns a success status upon completion. |
47
- | `convert_project` | Converts a specified project identified by project_id and returns the conversion result. |
48
- | `get_project_snapshots` | Retrieves a list of snapshots associated with a specified project. |
49
- | `streams_archive_with_project_audio` | Archives a project snapshot using the specified project ID and snapshot ID and returns a success status. |
50
- | `add_chapter_to_aproject` | Adds a new chapter to a specified project using the provided project identifier and returns a success status upon completion. |
51
- | `update_project_pronunciations` | Updates pronunciation dictionaries for a specified project using the POST method, returning a successful status message upon completion. |
52
- | `get_chapters` | Retrieves a chapter for a specified project by ID using the GET method. |
53
- | `get_chapter_by_id` | Retrieves a specific chapter within a project identified by project_id and chapter_id. |
54
- | `delete_chapter` | Deletes a specific chapter within a project using the "DELETE" method. |
55
- | `convert_chapter` | Converts a chapter in a project using the POST method and returns a response upon successful conversion. |
56
- | `get_chapter_snapshots` | Retrieves a snapshot for a specific chapter within a project using the provided project and chapter IDs. |
57
- | `stream_chapter_audio` | Streams data from a specific chapter snapshot in a project using the API and returns a response indicating success. |
58
- | `dub_avideo_or_an_audio_file` | Initiates a dubbing process and returns a status message using the API defined at the "/v1/dubbing" endpoint via the POST method. |
59
- | `get_dubbing_project_metadata` | Retrieves the details of a specific dubbing job using the provided dubbing ID. |
60
- | `delete_dubbing_project` | Deletes a dubbing project with the specified ID and returns a success status upon completion. |
61
- | `get_transcript_for_dub` | Retrieves the transcript for a specific dubbing task in the requested language using the "GET" method. |
62
- | `get_models` | Retrieves a list of models using the GET method at the "/v1/models" endpoint. |
63
- | `post_audio_native` | Processes audio data using the audio-native API and returns a response. |
64
- | `get_characters_usage_metrics` | Retrieves character statistics within a specified time frame using the start and end Unix timestamps provided in the query parameters. |
65
- | `add_apronunciation_dictionary` | Creates a pronunciation dictionary from a lexicon file and returns its ID and metadata. |
66
- | `add_rules_to_dictionary` | Adds pronunciation rules to a specific pronunciation dictionary identified by its ID using the POST method. |
67
- | `remove_pronunciation_rules` | Removes specified pronunciation rules from a pronunciation dictionary using a POST request. |
68
- | `get_dictionary_version_file` | Retrieves and downloads a specific version of a pronunciation dictionary file using its dictionary ID and version ID. |
69
- | `get_pronunciation_dictionary` | Retrieves a specific pronunciation dictionary by its ID using the "GET" method from the "/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}" endpoint. |
70
- | `get_pronunciation_dictionaries` | Retrieves a list of pronunciation dictionaries using the GET method at the "/v1/pronunciation-dictionaries" endpoint, allowing users to specify the number of items per page via the "page_size" query parameter. |
71
- | `invite_user` | Invites a user to join a workspace by sending an invitation, allowing them to access the specified workspace upon acceptance. |
72
- | `delete_existing_invitation` | Deletes a workspace invite and returns a success response upon completion. |
73
- | `update_member` | Adds members to a workspace and returns the updated member list upon success. |
74
- | `get_signed_url` | Generates a signed URL for initiating a conversation with a specific conversational AI agent, identified by the provided `agent_id`, using the ElevenLabs API. |
75
- | `create_agent` | Creates a conversational AI agent with specified configuration settings and returns the agent details. |
76
- | `get_agent` | Retrieves information about a specific conversational AI agent by its unique identifier using the GET method at the "/v1/convai/agents/{agent_id}" API endpoint. |
77
- | `delete_agent` | Deletes a specified Conversational AI agent using the DELETE method. |
78
- | `patches_an_agent_settings` | Updates an existing conversational AI agent's settings using the specified agent ID, allowing changes to properties such as the agent's name and tool configurations. |
79
- | `get_agent_widget_config` | Retrieves and configures the Convai widget for the specified agent, but the provided details do not specify the exact functionality of this specific endpoint, suggesting it may relate to integrating or customizing Convai's character interaction capabilities. |
80
- | `get_shareable_agent_link` | Retrieves and establishes a link for a Convai agent using the specified agent ID, facilitating integration or connectivity operations. |
81
- | `post_agent_avatar` | Creates and configures a Convai avatar for a specific agent using the POST method, though the exact details of this endpoint are not provided in the available documentation. |
82
- | `get_agent_knowledge_base` | Retrieves specific documentation for a knowledge base associated with an agent in Convai. |
83
- | `add_agent_secret` | Adds a secret to a specified conversational AI agent through the API and returns a status confirmation. |
84
- | `add_to_agent_sknowledge_base` | Adds new content to an agent's knowledge base by uploading a file or resource, which can be used to enhance the agent's conversational capabilities. |
85
- | `get_agents_page` | Retrieves a list of conversational AI agents available in the Convai system. |
86
- | `get_conversations` | Retrieves conversation history for a specified agent ID. |
87
- | `get_conversation_details` | Retrieves and formats the details of a specific conversation based on the provided conversation ID. |
88
- | `get_conversation_audio` | Retrieves the audio from a specific conversation using the ElevenLabs Conversational AI API. |
12
+ | `generate_speech_audio_url` | Converts a text string into speech using the ElevenLabs API. The function then saves the generated audio to a temporary MP3 file and returns a public URL to access it, rather than the raw audio bytes. |
13
+ | `speech_to_text` | Transcribes an audio file into text using the ElevenLabs API. It supports language specification and speaker diarization, providing the inverse operation to the audio-generating `text_to_speech` method. Note: The docstring indicates this is a placeholder for an undocumented endpoint. |
14
+ | `speech_to_speech` | Downloads an audio file from a URL and converts the speech into a specified target voice using the ElevenLabs API. This function transforms the speaker's voice in an existing recording and returns the new audio data as bytes, distinct from creating audio from text. |
@@ -2,13 +2,13 @@ import uuid
2
2
  from io import BytesIO
3
3
 
4
4
  import requests
5
-
6
- from elevenlabs import ElevenLabs
7
5
  from universal_mcp.applications.application import APIApplication
8
- from universal_mcp.applications.file_system.app import FileSystemApp
9
6
  from universal_mcp.exceptions import NotAuthorizedError
10
7
  from universal_mcp.integrations import Integration
11
8
 
9
+ from elevenlabs import ElevenLabs
10
+ from universal_mcp.applications.file_system.app import FileSystemApp
11
+
12
12
 
13
13
  class ElevenlabsApp(APIApplication):
14
14
  def __init__(self, integration: Integration = None, **kwargs) -> None:
@@ -24,7 +24,11 @@ class ElevenlabsApp(APIApplication):
24
24
  credentials = self.integration.get_credentials()
25
25
  if not credentials:
26
26
  raise NotAuthorizedError("No credentials found")
27
- api_key = credentials.get("api_key") or credentials.get("API_KEY") or credentials.get("apiKey")
27
+ api_key = (
28
+ credentials.get("api_key")
29
+ or credentials.get("API_KEY")
30
+ or credentials.get("apiKey")
31
+ )
28
32
  if not api_key:
29
33
  raise NotAuthorizedError("No api key found")
30
34
  self._client = ElevenLabs(api_key=api_key)
@@ -41,17 +45,17 @@ class ElevenlabsApp(APIApplication):
41
45
  ) -> bytes:
42
46
  """
43
47
  Converts a text string into speech using the ElevenLabs API. The function then saves the generated audio to a temporary MP3 file and returns a public URL to access it, rather than the raw audio bytes.
44
-
48
+
45
49
  Args:
46
50
  text (str): The text to convert to speech.
47
51
  voice_id (str): The ID of the voice to use.
48
52
  model_id (str, optional): The model to use. Defaults to "eleven_multilingual_v2".
49
53
  stability (float, optional): The stability of the voice.
50
54
  similarity_boost (float, optional): The similarity boost of the voice.
51
-
55
+
52
56
  Returns:
53
57
  bytes: The audio data.
54
-
58
+
55
59
  Tags:
56
60
  important
57
61
  """
@@ -77,13 +81,13 @@ class ElevenlabsApp(APIApplication):
77
81
  ) -> str:
78
82
  """
79
83
  Transcribes an audio file into text using the ElevenLabs API. It supports language specification and speaker diarization, providing the inverse operation to the audio-generating `text_to_speech` method. Note: The docstring indicates this is a placeholder for an undocumented endpoint.
80
-
84
+
81
85
  Args:
82
86
  audio_file_path (str): The path to the audio file.
83
-
87
+
84
88
  Returns:
85
89
  str: The transcribed text.
86
-
90
+
87
91
  Tags:
88
92
  important
89
93
  """
@@ -104,15 +108,15 @@ class ElevenlabsApp(APIApplication):
104
108
  ) -> bytes:
105
109
  """
106
110
  Downloads an audio file from a URL and converts the speech into a specified target voice using the ElevenLabs API. This function transforms the speaker's voice in an existing recording and returns the new audio data as bytes, distinct from creating audio from text.
107
-
111
+
108
112
  Args:
109
113
  voice_id (str): The ID of the voice to use for the conversion.
110
114
  audio_file_path (str): The path to the audio file to transform.
111
115
  model_id (str, optional): The model to use. Defaults to "eleven_multilingual_sts_v2".
112
-
116
+
113
117
  Returns:
114
118
  bytes: The transformed audio data.
115
-
119
+
116
120
  Tags:
117
121
  important
118
122
  """
@@ -139,8 +143,7 @@ async def demo_text_to_speech():
139
143
  A demonstration function that instantiates the `ElevenlabsApp` to test its `text_to_speech` method. It converts a sample string to audio and prints the resulting file URL to the console, serving as a basic usage example when the script is executed directly.
140
144
  """
141
145
  app = ElevenlabsApp()
142
- audio = await app.generate_speech_audio_url("Hello, world!")
143
- print(audio)
146
+ await app.generate_speech_audio_url("Hello, world!")
144
147
 
145
148
 
146
149
  if __name__ == "__main__":
@@ -1,15 +1,15 @@
1
- # Exa MCP Server
1
+ # ExaApp MCP Server
2
2
 
3
- An MCP Server for the Exa API.
3
+ An MCP Server for the ExaApp API.
4
4
 
5
5
  ## 🛠️ Tool List
6
6
 
7
- This is automatically generated from OpenAPI schema for the Exa API.
7
+ This is automatically generated from OpenAPI schema for the ExaApp API.
8
8
 
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `search` | Searches for data using the specified criteria and returns a list of results. |
13
- | `find_similar` | Finds and returns similar items using the API at "/findSimilar" via the POST method. |
14
- | `get_contents` | Creates new content entries via a POST request to the "/contents" endpoint. |
15
- | `answer` | Provides an answer to a query using the API endpoint at "/answer" via the POST method. |
12
+ | `search_with_filters` | Executes a query against the Exa API's `/search` endpoint, returning a list of results. This function supports extensive filtering by search type, category, domains, publication dates, and specific text content to refine the search query and tailor the API's response. |
13
+ | `find_similar_by_url` | Finds web pages semantically similar to a given URL. Unlike the `search` function, which uses a text query, this method takes a specific link and returns a list of related results, with options to filter by domain, publication date, and content. |
14
+ | `fetch_page_content` | Retrieves and processes content from a list of URLs, returning full text, summaries, or highlights. Unlike the search function which finds links, this function fetches the actual page content, with optional support for live crawling to get the most up-to-date information. |
15
+ | `answer` | Retrieves a direct, synthesized answer for a given query by calling the Exa `/answer` API endpoint. Unlike `search`, which returns web results, this function provides a conclusive response. It supports streaming, including source text, and selecting a search model. |
@@ -28,7 +28,7 @@ class ExaApp(APIApplication):
28
28
  ) -> dict[str, Any]:
29
29
  """
30
30
  Executes a query against the Exa API's `/search` endpoint, returning a list of results. This function supports extensive filtering by search type, category, domains, publication dates, and specific text content to refine the search query and tailor the API's response.
31
-
31
+
32
32
  Args:
33
33
  query (string): The query string for the search. Example: 'Latest developments in LLM capabilities'.
34
34
  useAutoprompt (boolean): Autoprompt converts your query to an Exa-style query. Enabled by default for auto search, optional for neural search, and not available for keyword search. Example: 'True'.
@@ -44,10 +44,10 @@ class ExaApp(APIApplication):
44
44
  includeText (array): List of strings that must be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words. Example: "['large language model']".
45
45
  excludeText (array): List of strings that must not be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words. Example: "['course']".
46
46
  contents (object): contents
47
-
47
+
48
48
  Returns:
49
49
  dict[str, Any]: OK
50
-
50
+
51
51
  Tags:
52
52
  important
53
53
  """
@@ -90,7 +90,7 @@ class ExaApp(APIApplication):
90
90
  ) -> dict[str, Any]:
91
91
  """
92
92
  Finds web pages semantically similar to a given URL. Unlike the `search` function, which uses a text query, this method takes a specific link and returns a list of related results, with options to filter by domain, publication date, and content.
93
-
93
+
94
94
  Args:
95
95
  url (string): The url for which you would like to find similar links. Example: 'https://arxiv.org/abs/2307.06435'.
96
96
  numResults (integer): Number of results to return (up to thousands of results available for custom plans) Example: '10'.
@@ -103,10 +103,10 @@ class ExaApp(APIApplication):
103
103
  includeText (array): List of strings that must be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words. Example: "['large language model']".
104
104
  excludeText (array): List of strings that must not be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words. Example: "['course']".
105
105
  contents (object): contents
106
-
106
+
107
107
  Returns:
108
108
  dict[str, Any]: OK
109
-
109
+
110
110
  Tags:
111
111
  important
112
112
  """
@@ -145,7 +145,7 @@ class ExaApp(APIApplication):
145
145
  ) -> dict[str, Any]:
146
146
  """
147
147
  Retrieves and processes content from a list of URLs, returning full text, summaries, or highlights. Unlike the search function which finds links, this function fetches the actual page content, with optional support for live crawling to get the most up-to-date information.
148
-
148
+
149
149
  Args:
150
150
  urls (array): Array of URLs to crawl (backwards compatible with 'ids' parameter). Example: "['https://arxiv.org/pdf/2307.06435']".
151
151
  ids (array): Deprecated - use 'urls' instead. Array of document IDs obtained from searches. Example: "['https://arxiv.org/pdf/2307.06435']".
@@ -162,10 +162,10 @@ class ExaApp(APIApplication):
162
162
  subpages (integer): The number of subpages to crawl. The actual number crawled may be limited by system constraints. Example: '1'.
163
163
  subpageTarget (string): Keyword to find specific subpages of search results. Can be a single string or an array of strings, comma delimited. Example: 'sources'.
164
164
  extras (object): Extra parameters to pass.
165
-
165
+
166
166
  Returns:
167
167
  dict[str, Any]: OK
168
-
168
+
169
169
  Tags:
170
170
  important
171
171
  """
@@ -191,16 +191,16 @@ class ExaApp(APIApplication):
191
191
  def answer(self, query, stream=None, text=None, model=None) -> dict[str, Any]:
192
192
  """
193
193
  Retrieves a direct, synthesized answer for a given query by calling the Exa `/answer` API endpoint. Unlike `search`, which returns web results, this function provides a conclusive response. It supports streaming, including source text, and selecting a search model.
194
-
194
+
195
195
  Args:
196
196
  query (string): The question or query to answer. Example: 'What is the latest valuation of SpaceX?'.
197
197
  stream (boolean): If true, the response is returned as a server-sent events (SSS) stream.
198
198
  text (boolean): If true, the response includes full text content in the search results
199
199
  model (string): The search model to use for the answer. Exa passes only one query to exa, while exa-pro also passes 2 expanded queries to our search model.
200
-
200
+
201
201
  Returns:
202
202
  dict[str, Any]: OK
203
-
203
+
204
204
  Tags:
205
205
  important
206
206
  """
@@ -219,8 +219,8 @@ class ExaApp(APIApplication):
219
219
 
220
220
  def list_tools(self):
221
221
  return [
222
- self.search_with_filters,
223
- self.find_similar_by_url,
224
- self.fetch_page_content,
225
- self.answer
226
- ]
222
+ self.search_with_filters,
223
+ self.find_similar_by_url,
224
+ self.fetch_page_content,
225
+ self.answer,
226
+ ]
@@ -1,17 +1,18 @@
1
- # Falai MCP Server
1
+ # FalaiApp MCP Server
2
2
 
3
- An MCP Server for the Falai API.
3
+ An MCP Server for the FalaiApp API.
4
4
 
5
5
  ## 🛠️ Tool List
6
6
 
7
- This is automatically generated from OpenAPI schema for the Falai API.
7
+ This is automatically generated from OpenAPI schema for the FalaiApp API.
8
8
 
9
- | Tool | Description |
10
- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
11
- | `run` | Run a Fal AI application directly and wait for the result. Suitable for short-running applications with synchronous execution from the caller's perspective. |
12
- | `submit` | Submits a request to the Fal AI queue for asynchronous processing and returns a request ID for tracking the job. |
13
- | `status` | Checks the status of a previously submitted Fal AI request and retrieves its current execution state |
14
- | `result` | Retrieves the result of a completed Fal AI request, waiting for completion if the request is still running. |
15
- | `cancel` | Asynchronously cancels a running or queued Fal AI request. |
16
- | `upload_file` | Uploads a local file to the Fal CDN and returns its public URL |
17
- | `generate_image` | Asynchronously generates images using the 'fal-ai/flux/dev' application with customizable parameters and default settings |
9
+
10
+ | Tool | Description |
11
+ |------|-------------|
12
+ | `run` | Executes a Fal AI application synchronously, waiting for completion and returning the result directly. This method is suited for short-running tasks, unlike `submit` which queues a job for asynchronous processing and returns a request ID instead of the final output. |
13
+ | `submit` | Submits a job to the Fal AI queue for asynchronous processing, immediately returning a request ID. This contrasts with the `run` method, which waits for completion. The returned ID is used by `check_status`, `get_result`, and `cancel` to manage the job's lifecycle. |
14
+ | `check_status` | Checks the execution state (e.g., Queued, InProgress) of an asynchronous Fal AI job using its request ID. It provides a non-blocking way to monitor jobs initiated via `submit` without fetching the final `result`, and can optionally include logs. |
15
+ | `get_result` | Retrieves the final result of an asynchronous job, identified by its `request_id`. This function waits for the job, initiated via `submit`, to complete. Unlike the non-blocking `check_status`, this method blocks execution to fetch and return the job's actual output upon completion. |
16
+ | `cancel` | Asynchronously cancels a running or queued Fal AI job using its `request_id`. This function complements the `submit` method, providing a way to terminate asynchronous tasks before completion. It raises a `ToolError` if the cancellation request fails. |
17
+ | `upload_file` | Asynchronously uploads a local file to the Fal Content Delivery Network (CDN), returning a public URL. This URL makes the file accessible for use as input in other Fal AI job execution methods like `run` or `submit`. A `ToolError` is raised if the upload fails. |
18
+ | `run_image_generation` | A specialized wrapper for the `run` method that synchronously generates images using the 'fal-ai/flux/dev' model. It simplifies image creation with common parameters like `prompt` and `seed`, waits for the task to complete, and directly returns the result containing image URLs and metadata. |