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.
- universal_mcp/applications/BEST_PRACTICES.md +166 -0
- universal_mcp/applications/ahrefs/README.md +3 -3
- universal_mcp/applications/airtable/README.md +3 -3
- universal_mcp/applications/airtable/app.py +0 -1
- universal_mcp/applications/apollo/app.py +0 -1
- universal_mcp/applications/asana/README.md +3 -3
- universal_mcp/applications/aws_s3/README.md +29 -0
- universal_mcp/applications/aws_s3/app.py +40 -39
- universal_mcp/applications/bill/README.md +249 -0
- universal_mcp/applications/browser_use/README.md +1 -0
- universal_mcp/applications/browser_use/__init__.py +0 -0
- universal_mcp/applications/browser_use/app.py +71 -0
- universal_mcp/applications/calendly/README.md +45 -45
- universal_mcp/applications/calendly/app.py +125 -125
- universal_mcp/applications/canva/README.md +35 -35
- universal_mcp/applications/canva/app.py +95 -99
- universal_mcp/applications/clickup/README.md +4 -4
- universal_mcp/applications/confluence/app.py +0 -1
- universal_mcp/applications/contentful/README.md +1 -2
- universal_mcp/applications/contentful/app.py +4 -5
- universal_mcp/applications/crustdata/README.md +3 -3
- universal_mcp/applications/domain_checker/README.md +2 -2
- universal_mcp/applications/domain_checker/app.py +11 -15
- universal_mcp/applications/e2b/README.md +4 -4
- universal_mcp/applications/e2b/app.py +4 -4
- universal_mcp/applications/elevenlabs/README.md +3 -77
- universal_mcp/applications/elevenlabs/app.py +18 -15
- universal_mcp/applications/exa/README.md +7 -7
- universal_mcp/applications/exa/app.py +17 -17
- universal_mcp/applications/falai/README.md +13 -12
- universal_mcp/applications/falai/app.py +34 -35
- universal_mcp/applications/figma/README.md +3 -3
- universal_mcp/applications/file_system/README.md +13 -0
- universal_mcp/applications/file_system/app.py +9 -9
- universal_mcp/applications/firecrawl/README.md +9 -9
- universal_mcp/applications/firecrawl/app.py +46 -46
- universal_mcp/applications/fireflies/README.md +14 -14
- universal_mcp/applications/fireflies/app.py +164 -57
- universal_mcp/applications/fpl/README.md +12 -12
- universal_mcp/applications/fpl/app.py +54 -55
- universal_mcp/applications/ghost_content/app.py +0 -1
- universal_mcp/applications/github/README.md +10 -10
- universal_mcp/applications/github/app.py +50 -52
- universal_mcp/applications/google_calendar/README.md +10 -10
- universal_mcp/applications/google_calendar/app.py +50 -49
- universal_mcp/applications/google_docs/README.md +14 -14
- universal_mcp/applications/google_docs/app.py +307 -233
- universal_mcp/applications/google_drive/README.md +54 -57
- universal_mcp/applications/google_drive/app.py +270 -261
- universal_mcp/applications/google_gemini/README.md +3 -14
- universal_mcp/applications/google_gemini/app.py +15 -18
- universal_mcp/applications/google_mail/README.md +20 -20
- universal_mcp/applications/google_mail/app.py +110 -109
- universal_mcp/applications/google_searchconsole/README.md +10 -10
- universal_mcp/applications/google_searchconsole/app.py +37 -37
- universal_mcp/applications/google_sheet/README.md +25 -25
- universal_mcp/applications/google_sheet/app.py +270 -266
- universal_mcp/applications/hashnode/README.md +6 -3
- universal_mcp/applications/hashnode/app.py +174 -25
- universal_mcp/applications/http_tools/README.md +5 -5
- universal_mcp/applications/http_tools/app.py +10 -11
- universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
- universal_mcp/applications/hubspot/api_segments/api_segment_base.py +54 -0
- universal_mcp/applications/hubspot/api_segments/crm_api.py +7337 -0
- universal_mcp/applications/hubspot/api_segments/marketing_api.py +1467 -0
- universal_mcp/applications/hubspot/app.py +2 -15
- universal_mcp/applications/jira/app.py +0 -1
- universal_mcp/applications/klaviyo/README.md +0 -36
- universal_mcp/applications/linkedin/README.md +18 -4
- universal_mcp/applications/linkedin/app.py +763 -162
- universal_mcp/applications/mailchimp/README.md +3 -3
- universal_mcp/applications/markitdown/app.py +10 -5
- universal_mcp/applications/ms_teams/README.md +31 -31
- universal_mcp/applications/ms_teams/app.py +151 -151
- universal_mcp/applications/neon/README.md +3 -3
- universal_mcp/applications/onedrive/README.md +24 -0
- universal_mcp/applications/onedrive/__init__.py +1 -0
- universal_mcp/applications/onedrive/app.py +338 -0
- universal_mcp/applications/openai/README.md +18 -17
- universal_mcp/applications/openai/app.py +40 -39
- universal_mcp/applications/outlook/README.md +9 -9
- universal_mcp/applications/outlook/app.py +307 -225
- universal_mcp/applications/perplexity/README.md +4 -4
- universal_mcp/applications/perplexity/app.py +4 -4
- universal_mcp/applications/posthog/README.md +128 -127
- universal_mcp/applications/reddit/README.md +21 -124
- universal_mcp/applications/reddit/app.py +51 -68
- universal_mcp/applications/resend/README.md +29 -29
- universal_mcp/applications/resend/app.py +116 -117
- universal_mcp/applications/rocketlane/app.py +0 -1
- universal_mcp/applications/scraper/README.md +7 -4
- universal_mcp/applications/scraper/__init__.py +1 -1
- universal_mcp/applications/scraper/app.py +341 -103
- universal_mcp/applications/semrush/README.md +3 -0
- universal_mcp/applications/serpapi/README.md +3 -3
- universal_mcp/applications/serpapi/app.py +14 -14
- universal_mcp/applications/sharepoint/README.md +19 -0
- universal_mcp/applications/sharepoint/app.py +285 -173
- universal_mcp/applications/shopify/app.py +0 -1
- universal_mcp/applications/shortcut/README.md +3 -3
- universal_mcp/applications/slack/README.md +23 -0
- universal_mcp/applications/slack/app.py +79 -48
- universal_mcp/applications/spotify/README.md +3 -3
- universal_mcp/applications/supabase/README.md +3 -3
- universal_mcp/applications/tavily/README.md +4 -4
- universal_mcp/applications/tavily/app.py +4 -4
- universal_mcp/applications/twilio/README.md +15 -0
- universal_mcp/applications/twitter/README.md +92 -89
- universal_mcp/applications/twitter/api_segments/compliance_api.py +13 -15
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +20 -20
- universal_mcp/applications/twitter/api_segments/dm_events_api.py +12 -12
- universal_mcp/applications/twitter/api_segments/likes_api.py +12 -12
- universal_mcp/applications/twitter/api_segments/lists_api.py +37 -39
- universal_mcp/applications/twitter/api_segments/spaces_api.py +24 -24
- universal_mcp/applications/twitter/api_segments/trends_api.py +4 -4
- universal_mcp/applications/twitter/api_segments/tweets_api.py +105 -105
- universal_mcp/applications/twitter/api_segments/usage_api.py +4 -4
- universal_mcp/applications/twitter/api_segments/users_api.py +136 -136
- universal_mcp/applications/twitter/app.py +15 -11
- universal_mcp/applications/whatsapp/README.md +12 -12
- universal_mcp/applications/whatsapp/app.py +66 -67
- universal_mcp/applications/whatsapp/audio.py +39 -35
- universal_mcp/applications/whatsapp/whatsapp.py +176 -154
- universal_mcp/applications/whatsapp_business/README.md +23 -23
- universal_mcp/applications/whatsapp_business/app.py +92 -92
- universal_mcp/applications/yahoo_finance/README.md +17 -0
- universal_mcp/applications/yahoo_finance/__init__.py +1 -0
- universal_mcp/applications/yahoo_finance/app.py +300 -0
- universal_mcp/applications/youtube/README.md +46 -46
- universal_mcp/applications/youtube/app.py +208 -195
- universal_mcp/applications/zenquotes/README.md +1 -1
- universal_mcp/applications/zenquotes/__init__.py +2 -0
- universal_mcp/applications/zenquotes/app.py +5 -5
- {universal_mcp_applications-0.1.17.dist-info → universal_mcp_applications-0.1.33.dist-info}/METADATA +5 -90
- {universal_mcp_applications-0.1.17.dist-info → universal_mcp_applications-0.1.33.dist-info}/RECORD +137 -128
- universal_mcp/applications/replicate/README.md +0 -18
- universal_mcp/applications/replicate/__init__.py +0 -1
- universal_mcp/applications/replicate/app.py +0 -493
- universal_mcp/applications/unipile/README.md +0 -28
- universal_mcp/applications/unipile/__init__.py +0 -1
- universal_mcp/applications/unipile/app.py +0 -827
- {universal_mcp_applications-0.1.17.dist-info → universal_mcp_applications-0.1.33.dist-info}/WHEEL +0 -0
- {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
|
-
| `
|
|
13
|
-
| `
|
|
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
|
-
#
|
|
1
|
+
# E2bApp MCP Server
|
|
2
2
|
|
|
3
|
-
An MCP Server for the
|
|
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
|
|
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
|
|
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
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
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 =
|
|
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
|
-
|
|
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
|
-
#
|
|
1
|
+
# ExaApp MCP Server
|
|
2
2
|
|
|
3
|
-
An MCP Server for the
|
|
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
|
|
7
|
+
This is automatically generated from OpenAPI schema for the ExaApp API.
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
| Tool | Description |
|
|
11
11
|
|------|-------------|
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
15
|
-
| `answer` |
|
|
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
|
-
#
|
|
1
|
+
# FalaiApp MCP Server
|
|
2
2
|
|
|
3
|
-
An MCP Server for the
|
|
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
|
|
7
|
+
This is automatically generated from OpenAPI schema for the FalaiApp API.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
|
11
|
-
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
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. |
|