universal-mcp 0.1.12__py3-none-any.whl → 0.1.13rc2__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.
- universal_mcp/applications/__init__.py +51 -7
- universal_mcp/cli.py +109 -17
- universal_mcp/integrations/__init__.py +1 -1
- universal_mcp/integrations/integration.py +79 -0
- universal_mcp/servers/README.md +79 -0
- universal_mcp/servers/server.py +17 -29
- universal_mcp/stores/README.md +74 -0
- universal_mcp/stores/store.py +0 -2
- universal_mcp/templates/README.md.j2 +93 -0
- universal_mcp/templates/api_client.py.j2 +27 -0
- universal_mcp/tools/README.md +86 -0
- universal_mcp/tools/tools.py +1 -1
- universal_mcp/utils/agentr.py +90 -0
- universal_mcp/utils/api_generator.py +166 -208
- universal_mcp/utils/openapi.py +221 -321
- universal_mcp/utils/singleton.py +23 -0
- {universal_mcp-0.1.12.dist-info → universal_mcp-0.1.13rc2.dist-info}/METADATA +16 -41
- universal_mcp-0.1.13rc2.dist-info/RECORD +38 -0
- universal_mcp/applications/ahrefs/README.md +0 -76
- universal_mcp/applications/ahrefs/__init__.py +0 -0
- universal_mcp/applications/ahrefs/app.py +0 -2291
- universal_mcp/applications/cal_com_v2/README.md +0 -175
- universal_mcp/applications/cal_com_v2/__init__.py +0 -0
- universal_mcp/applications/cal_com_v2/app.py +0 -5390
- universal_mcp/applications/calendly/README.md +0 -78
- universal_mcp/applications/calendly/__init__.py +0 -0
- universal_mcp/applications/calendly/app.py +0 -1195
- universal_mcp/applications/clickup/README.md +0 -160
- universal_mcp/applications/clickup/__init__.py +0 -0
- universal_mcp/applications/clickup/app.py +0 -5009
- universal_mcp/applications/coda/README.md +0 -133
- universal_mcp/applications/coda/__init__.py +0 -0
- universal_mcp/applications/coda/app.py +0 -3671
- universal_mcp/applications/e2b/README.md +0 -37
- universal_mcp/applications/e2b/app.py +0 -65
- universal_mcp/applications/elevenlabs/README.md +0 -84
- universal_mcp/applications/elevenlabs/__init__.py +0 -0
- universal_mcp/applications/elevenlabs/app.py +0 -1402
- universal_mcp/applications/falai/README.md +0 -42
- universal_mcp/applications/falai/__init__.py +0 -0
- universal_mcp/applications/falai/app.py +0 -332
- universal_mcp/applications/figma/README.md +0 -74
- universal_mcp/applications/figma/__init__.py +0 -0
- universal_mcp/applications/figma/app.py +0 -1261
- universal_mcp/applications/firecrawl/README.md +0 -45
- universal_mcp/applications/firecrawl/app.py +0 -268
- universal_mcp/applications/github/README.md +0 -47
- universal_mcp/applications/github/app.py +0 -429
- universal_mcp/applications/gong/README.md +0 -88
- universal_mcp/applications/gong/__init__.py +0 -0
- universal_mcp/applications/gong/app.py +0 -2297
- universal_mcp/applications/google_calendar/app.py +0 -442
- universal_mcp/applications/google_docs/README.md +0 -40
- universal_mcp/applications/google_docs/app.py +0 -88
- universal_mcp/applications/google_drive/README.md +0 -44
- universal_mcp/applications/google_drive/app.py +0 -286
- universal_mcp/applications/google_mail/README.md +0 -47
- universal_mcp/applications/google_mail/app.py +0 -664
- universal_mcp/applications/google_sheet/README.md +0 -42
- universal_mcp/applications/google_sheet/app.py +0 -150
- universal_mcp/applications/hashnode/app.py +0 -81
- universal_mcp/applications/hashnode/prompt.md +0 -23
- universal_mcp/applications/heygen/README.md +0 -69
- universal_mcp/applications/heygen/__init__.py +0 -0
- universal_mcp/applications/heygen/app.py +0 -956
- universal_mcp/applications/mailchimp/README.md +0 -306
- universal_mcp/applications/mailchimp/__init__.py +0 -0
- universal_mcp/applications/mailchimp/app.py +0 -10937
- universal_mcp/applications/markitdown/app.py +0 -44
- universal_mcp/applications/notion/README.md +0 -55
- universal_mcp/applications/notion/__init__.py +0 -0
- universal_mcp/applications/notion/app.py +0 -527
- universal_mcp/applications/perplexity/README.md +0 -37
- universal_mcp/applications/perplexity/app.py +0 -65
- universal_mcp/applications/reddit/README.md +0 -45
- universal_mcp/applications/reddit/app.py +0 -379
- universal_mcp/applications/replicate/README.md +0 -65
- universal_mcp/applications/replicate/__init__.py +0 -0
- universal_mcp/applications/replicate/app.py +0 -980
- universal_mcp/applications/resend/README.md +0 -38
- universal_mcp/applications/resend/app.py +0 -37
- universal_mcp/applications/retell_ai/README.md +0 -46
- universal_mcp/applications/retell_ai/__init__.py +0 -0
- universal_mcp/applications/retell_ai/app.py +0 -333
- universal_mcp/applications/rocketlane/README.md +0 -42
- universal_mcp/applications/rocketlane/__init__.py +0 -0
- universal_mcp/applications/rocketlane/app.py +0 -194
- universal_mcp/applications/serpapi/README.md +0 -37
- universal_mcp/applications/serpapi/app.py +0 -73
- universal_mcp/applications/spotify/README.md +0 -116
- universal_mcp/applications/spotify/__init__.py +0 -0
- universal_mcp/applications/spotify/app.py +0 -2526
- universal_mcp/applications/supabase/README.md +0 -112
- universal_mcp/applications/supabase/__init__.py +0 -0
- universal_mcp/applications/supabase/app.py +0 -2970
- universal_mcp/applications/tavily/README.md +0 -38
- universal_mcp/applications/tavily/app.py +0 -51
- universal_mcp/applications/wrike/README.md +0 -71
- universal_mcp/applications/wrike/__init__.py +0 -0
- universal_mcp/applications/wrike/app.py +0 -1372
- universal_mcp/applications/youtube/README.md +0 -82
- universal_mcp/applications/youtube/__init__.py +0 -0
- universal_mcp/applications/youtube/app.py +0 -1428
- universal_mcp/applications/zenquotes/README.md +0 -37
- universal_mcp/applications/zenquotes/app.py +0 -31
- universal_mcp/integrations/agentr.py +0 -112
- universal_mcp-0.1.12.dist-info/RECORD +0 -119
- {universal_mcp-0.1.12.dist-info → universal_mcp-0.1.13rc2.dist-info}/WHEEL +0 -0
- {universal_mcp-0.1.12.dist-info → universal_mcp-0.1.13rc2.dist-info}/entry_points.txt +0 -0
@@ -1,194 +0,0 @@
|
|
1
|
-
from typing import Any
|
2
|
-
|
3
|
-
from universal_mcp.applications import APIApplication
|
4
|
-
from universal_mcp.integrations import Integration
|
5
|
-
|
6
|
-
|
7
|
-
class RocketlaneApp(APIApplication):
|
8
|
-
def __init__(self, integration: Integration = None, **kwargs) -> None:
|
9
|
-
super().__init__(name="rocketlane", integration=integration, **kwargs)
|
10
|
-
subdomain = self.integration.get_credentials().get("subdomain")
|
11
|
-
self.base_url = f"https://{subdomain}.api.rocketlane.com/api/v1"
|
12
|
-
|
13
|
-
def _get_headers(self) -> dict[str, Any]:
|
14
|
-
api_key = self.integration.get_credentials().get("api_key")
|
15
|
-
return {
|
16
|
-
"api-key": f"{api_key}",
|
17
|
-
"Content-Type": "application/json",
|
18
|
-
"Accept": "application/json",
|
19
|
-
}
|
20
|
-
|
21
|
-
def get_subscription(
|
22
|
-
self,
|
23
|
-
) -> Any:
|
24
|
-
"""
|
25
|
-
Retrieves subscription details from the server.
|
26
|
-
|
27
|
-
Args:
|
28
|
-
None: This function does not take any parameters.
|
29
|
-
|
30
|
-
Returns:
|
31
|
-
A JSON response containing subscription details.
|
32
|
-
|
33
|
-
Raises:
|
34
|
-
requests.HTTPError: Raised if an HTTP error occurs during the request
|
35
|
-
|
36
|
-
Tags:
|
37
|
-
fetch, subscription, management, important
|
38
|
-
"""
|
39
|
-
url = f"{self.base_url}/subscription"
|
40
|
-
query_params = {}
|
41
|
-
response = self._get(url, params=query_params)
|
42
|
-
response.raise_for_status()
|
43
|
-
return response.json()
|
44
|
-
|
45
|
-
def get_home(
|
46
|
-
self,
|
47
|
-
) -> Any:
|
48
|
-
"""
|
49
|
-
Retrieves the JSON response from the '/home' endpoint of the configured API.
|
50
|
-
|
51
|
-
Returns:
|
52
|
-
Any: Parsed JSON data returned by the '/home' endpoint.
|
53
|
-
|
54
|
-
Raises:
|
55
|
-
requests.HTTPError: If the HTTP request to the '/home' endpoint returns an unsuccessful status code.
|
56
|
-
|
57
|
-
Tags:
|
58
|
-
get, home, api, request, important
|
59
|
-
"""
|
60
|
-
url = f"{self.base_url}/home"
|
61
|
-
query_params = {}
|
62
|
-
response = self._get(url, params=query_params)
|
63
|
-
response.raise_for_status()
|
64
|
-
return response.json()
|
65
|
-
|
66
|
-
def get_all_projects(
|
67
|
-
self,
|
68
|
-
) -> dict[str, Any]:
|
69
|
-
"""
|
70
|
-
Retrieves a list of all projects from the remote service.
|
71
|
-
|
72
|
-
Args:
|
73
|
-
None: This function takes no arguments
|
74
|
-
|
75
|
-
Returns:
|
76
|
-
A dictionary containing the JSON response data representing all available projects.
|
77
|
-
|
78
|
-
Raises:
|
79
|
-
HTTPError: If the HTTP request to retrieve the projects fails or returns an unsuccessful status code.
|
80
|
-
|
81
|
-
Tags:
|
82
|
-
list, projects, api, important
|
83
|
-
"""
|
84
|
-
url = f"{self.base_url}/projects"
|
85
|
-
query_params = {}
|
86
|
-
response = self._get(url, params=query_params)
|
87
|
-
response.raise_for_status()
|
88
|
-
return response.json()
|
89
|
-
|
90
|
-
def get_projects_by_projectid(self, projectId) -> Any:
|
91
|
-
"""
|
92
|
-
Retrieves project details for a given project ID from the server.
|
93
|
-
|
94
|
-
Args:
|
95
|
-
projectId: The unique identifier of the project to retrieve.
|
96
|
-
|
97
|
-
Returns:
|
98
|
-
A JSON-deserialized object containing the project's details as returned by the server.
|
99
|
-
|
100
|
-
Raises:
|
101
|
-
ValueError: Raised if 'projectId' is None.
|
102
|
-
requests.HTTPError: Raised if the HTTP request to retrieve the project fails (e.g., 4xx or 5xx response).
|
103
|
-
|
104
|
-
Tags:
|
105
|
-
get, project, fetch, management, important
|
106
|
-
"""
|
107
|
-
if projectId is None:
|
108
|
-
raise ValueError("Missing required parameter 'projectId'")
|
109
|
-
url = f"{self.base_url}/projects/{projectId}"
|
110
|
-
query_params = {}
|
111
|
-
response = self._get(url, params=query_params)
|
112
|
-
response.raise_for_status()
|
113
|
-
return response.json()
|
114
|
-
|
115
|
-
def get_projects_by_projectid_tasks(self, projectId) -> Any:
|
116
|
-
"""
|
117
|
-
Retrieves a list of tasks associated with a given project ID.
|
118
|
-
|
119
|
-
Args:
|
120
|
-
projectId: str. The unique identifier of the project whose tasks are to be retrieved.
|
121
|
-
|
122
|
-
Returns:
|
123
|
-
dict. A JSON object containing the list of tasks for the specified project.
|
124
|
-
|
125
|
-
Raises:
|
126
|
-
ValueError: If the projectId parameter is None.
|
127
|
-
requests.HTTPError: If the HTTP request to retrieve tasks fails (i.e., non-2xx response).
|
128
|
-
|
129
|
-
Tags:
|
130
|
-
get, list, project-tasks, management, important
|
131
|
-
"""
|
132
|
-
if projectId is None:
|
133
|
-
raise ValueError("Missing required parameter 'projectId'")
|
134
|
-
url = f"{self.base_url}/projects/{projectId}/tasks"
|
135
|
-
query_params = {}
|
136
|
-
response = self._get(url, params=query_params)
|
137
|
-
response.raise_for_status()
|
138
|
-
return response.json()
|
139
|
-
|
140
|
-
def create_task(
|
141
|
-
self,
|
142
|
-
projectId,
|
143
|
-
taskDescription=None,
|
144
|
-
taskName=None,
|
145
|
-
assignee=None,
|
146
|
-
startDate=None,
|
147
|
-
dueDate=None,
|
148
|
-
) -> dict[str, Any]:
|
149
|
-
"""
|
150
|
-
Creates a new task within the specified project, assigning optional details such as description, name, assignee, start date, and due date.
|
151
|
-
|
152
|
-
Args:
|
153
|
-
projectId: str. The unique identifier of the project in which to create the task. Required.
|
154
|
-
taskDescription: Optional[str]. A description of the task to be created.
|
155
|
-
taskName: Optional[str]. The name of the new task.
|
156
|
-
assignee: Optional[str]. The user to whom the task is assigned.
|
157
|
-
startDate: Optional[str]. The starting date for the task, formatted as an ISO 8601 string.
|
158
|
-
dueDate: Optional[str]. The due date for task completion, formatted as an ISO 8601 string.
|
159
|
-
|
160
|
-
Returns:
|
161
|
-
dict[str, Any]: A dictionary containing the details of the created task as returned by the API.
|
162
|
-
|
163
|
-
Raises:
|
164
|
-
ValueError: If 'projectId' is not provided.
|
165
|
-
requests.HTTPError: If the API request fails and returns a non-success HTTP status code.
|
166
|
-
|
167
|
-
Tags:
|
168
|
-
create, task, management, project, api, important
|
169
|
-
"""
|
170
|
-
if projectId is None:
|
171
|
-
raise ValueError("Missing required parameter 'projectId'")
|
172
|
-
request_body = {
|
173
|
-
"taskDescription": taskDescription,
|
174
|
-
"taskName": taskName,
|
175
|
-
"assignee": assignee,
|
176
|
-
"startDate": startDate,
|
177
|
-
"dueDate": dueDate,
|
178
|
-
}
|
179
|
-
request_body = {k: v for k, v in request_body.items() if v is not None}
|
180
|
-
url = f"{self.base_url}/projects/{projectId}/tasks"
|
181
|
-
query_params = {}
|
182
|
-
response = self._post(url, data=request_body, params=query_params)
|
183
|
-
response.raise_for_status()
|
184
|
-
return response.json()
|
185
|
-
|
186
|
-
def list_tools(self):
|
187
|
-
return [
|
188
|
-
self.get_subscription,
|
189
|
-
self.get_home,
|
190
|
-
self.get_all_projects,
|
191
|
-
self.get_projects_by_projectid,
|
192
|
-
self.get_projects_by_projectid_tasks,
|
193
|
-
self.create_task,
|
194
|
-
]
|
@@ -1,37 +0,0 @@
|
|
1
|
-
|
2
|
-
# Serp MCP Server
|
3
|
-
|
4
|
-
An MCP Server for the Serp API.
|
5
|
-
|
6
|
-
## Supported Integrations
|
7
|
-
|
8
|
-
- AgentR
|
9
|
-
- API Key (Coming Soon)
|
10
|
-
- OAuth (Coming Soon)
|
11
|
-
|
12
|
-
## Tools
|
13
|
-
|
14
|
-
This is automatically generated from OpenAPI schema for the Serp API.
|
15
|
-
|
16
|
-
## Supported Integrations
|
17
|
-
|
18
|
-
This tool can be integrated with any service that supports HTTP requests.
|
19
|
-
|
20
|
-
## Tool List
|
21
|
-
|
22
|
-
| Tool | Description |
|
23
|
-
|------|-------------|
|
24
|
-
| search | Perform a search on the specified engine using SerpApi. |
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
## Usage
|
29
|
-
|
30
|
-
- Login to AgentR
|
31
|
-
- Follow the quickstart guide to setup MCP Server for your client
|
32
|
-
- Visit Apps Store and enable the Serp app
|
33
|
-
- Restart the MCP Server
|
34
|
-
|
35
|
-
### Local Development
|
36
|
-
|
37
|
-
- Follow the README to test with the local MCP Server
|
@@ -1,73 +0,0 @@
|
|
1
|
-
import httpx
|
2
|
-
from serpapi import SerpApiClient as SerpApiSearch
|
3
|
-
|
4
|
-
from universal_mcp.applications.application import APIApplication
|
5
|
-
|
6
|
-
|
7
|
-
class SerpapiApp(APIApplication):
|
8
|
-
def __init__(self, **kwargs):
|
9
|
-
super().__init__(name="serpapi", **kwargs)
|
10
|
-
|
11
|
-
async def search(self, params: dict[str, any] = None) -> str:
|
12
|
-
"""
|
13
|
-
Performs an asynchronous search using the SerpApi service and returns formatted search results.
|
14
|
-
|
15
|
-
Args:
|
16
|
-
params: Dictionary of engine-specific parameters (e.g., {'q': 'Coffee', 'engine': 'google_light', 'location': 'Austin, TX'}). Defaults to None.
|
17
|
-
|
18
|
-
Returns:
|
19
|
-
A formatted string containing search results with titles, links, and snippets, or an error message if the search fails.
|
20
|
-
|
21
|
-
Raises:
|
22
|
-
httpx.HTTPStatusError: Raised when the API request fails due to HTTP errors (401 for invalid API key, 429 for rate limiting)
|
23
|
-
Exception: Raised for general errors such as network issues or invalid parameters
|
24
|
-
|
25
|
-
Tags:
|
26
|
-
search, async, web-scraping, api, serpapi, important
|
27
|
-
"""
|
28
|
-
if params is None:
|
29
|
-
params = {}
|
30
|
-
api_key = self.integration.get_credentials().get("api_key")
|
31
|
-
params = {
|
32
|
-
"api_key": api_key,
|
33
|
-
"engine": "google_light", # Fastest engine by default
|
34
|
-
**params, # Include any additional parameters
|
35
|
-
}
|
36
|
-
try:
|
37
|
-
search = SerpApiSearch(params)
|
38
|
-
data = search.get_dict()
|
39
|
-
|
40
|
-
# Process organic search results if available
|
41
|
-
if "organic_results" in data:
|
42
|
-
formatted_results = []
|
43
|
-
for result in data.get("organic_results", []):
|
44
|
-
title = result.get("title", "No title")
|
45
|
-
link = result.get("link", "No link")
|
46
|
-
snippet = result.get("snippet", "No snippet")
|
47
|
-
formatted_results.append(
|
48
|
-
f"Title: {title}\nLink: {link}\nSnippet: {snippet}\n"
|
49
|
-
)
|
50
|
-
return (
|
51
|
-
"\n".join(formatted_results)
|
52
|
-
if formatted_results
|
53
|
-
else "No organic results found"
|
54
|
-
)
|
55
|
-
else:
|
56
|
-
return "No organic results found"
|
57
|
-
|
58
|
-
# Handle HTTP-specific errors
|
59
|
-
except httpx.HTTPStatusError as e:
|
60
|
-
if e.response.status_code == 429:
|
61
|
-
return "Error: Rate limit exceeded. Please try again later."
|
62
|
-
elif e.response.status_code == 401:
|
63
|
-
return "Error: Invalid API key. Please check your SERPAPI_API_KEY."
|
64
|
-
else:
|
65
|
-
return f"Error: {e.response.status_code} - {e.response.text}"
|
66
|
-
# Handle other exceptions (e.g., network issues)
|
67
|
-
except Exception as e:
|
68
|
-
return f"Error: {str(e)}"
|
69
|
-
|
70
|
-
def list_tools(self):
|
71
|
-
return [
|
72
|
-
self.search,
|
73
|
-
]
|
@@ -1,116 +0,0 @@
|
|
1
|
-
|
2
|
-
# Spotify MCP Server
|
3
|
-
|
4
|
-
An MCP Server for the Spotify API.
|
5
|
-
|
6
|
-
## Supported Integrations
|
7
|
-
|
8
|
-
- AgentR
|
9
|
-
- API Key (Coming Soon)
|
10
|
-
- OAuth (Coming Soon)
|
11
|
-
|
12
|
-
## Tools
|
13
|
-
|
14
|
-
This is automatically generated from OpenAPI schema for the Spotify API.
|
15
|
-
|
16
|
-
## Supported Integrations
|
17
|
-
|
18
|
-
This tool can be integrated with any service that supports HTTP requests.
|
19
|
-
|
20
|
-
## Tool List
|
21
|
-
|
22
|
-
| Tool | Description |
|
23
|
-
|------|-------------|
|
24
|
-
| get_an_album | Retrieves detailed information about a specific album by its ID from the API. |
|
25
|
-
| get_multiple_albums | Retrieves detailed information for multiple albums by their IDs from the API. |
|
26
|
-
| get_an_albums_tracks | Retrieves the list of tracks for a specified album from the API, with optional filtering and pagination. |
|
27
|
-
| get_an_artist | Retrieve detailed information about a specific artist by their unique identifier. |
|
28
|
-
| get_multiple_artists | Retrieves information for multiple artists using their IDs. |
|
29
|
-
| get_an_artists_albums | Retrieves a list of albums for the specified artist from the API. |
|
30
|
-
| get_an_artists_top_tracks | Retrieves the top tracks for a specified artist from the API. |
|
31
|
-
| get_an_artists_related_artists | Retrieves a list of artists related to the specified artist by their unique ID. |
|
32
|
-
| get_a_show | Retrieve detailed information about a show by its unique identifier. |
|
33
|
-
| get_multiple_shows | Retrieves information for multiple shows by their IDs, with optional market filtering. |
|
34
|
-
| get_a_shows_episodes | Retrieves episodes for a specific show from the API with optional market, limit, and offset parameters. |
|
35
|
-
| get_an_episode | Retrieves a single podcast episode's details by its unique identifier. |
|
36
|
-
| get_multiple_episodes | Retrieves details for multiple podcast episodes using their IDs, optionally filtered by market. |
|
37
|
-
| get_an_audiobook | Retrieves detailed information about a specific audiobook by ID, optionally filtered by market. |
|
38
|
-
| get_multiple_audiobooks | Fetches details for multiple audiobooks by their IDs, optionally filtered by market. |
|
39
|
-
| get_audiobook_chapters | Retrieves the chapters for a specified audiobook from the API. |
|
40
|
-
| get_users_saved_audiobooks | Retrieves the current user's saved audiobooks from the API with optional pagination. |
|
41
|
-
| save_audiobooks_user | Saves one or more audiobooks to the current user's library. |
|
42
|
-
| remove_audiobooks_user | Removes one or more audiobooks from the authenticated user's library. |
|
43
|
-
| check_users_saved_audiobooks | Checks if the specified audiobooks are saved in the current user's library. |
|
44
|
-
| get_a_chapter | Retrieves a specific chapter's details by ID from the API, optionally filtering by market. |
|
45
|
-
| get_several_chapters | Retrieve details for multiple chapters based on their IDs, optionally filtering by market. |
|
46
|
-
| get_track | Retrieves detailed information about a track by its unique identifier from the external API. |
|
47
|
-
| get_several_tracks | Retrieves metadata for multiple tracks based on their IDs from the API. |
|
48
|
-
| search | Performs a search query against the API and returns the matching results as a JSON object. |
|
49
|
-
| get_current_users_profile | Retrieves the current authenticated user's profile information from the API. |
|
50
|
-
| get_playlist | Retrieves a playlist from the API using the specified playlist ID. |
|
51
|
-
| change_playlist_details | Update the details of an existing playlist with the specified attributes. |
|
52
|
-
| get_playlists_tracks | Retrieves the tracks of a specified playlist from the API, applying optional filters and pagination parameters. |
|
53
|
-
| add_tracks_to_playlist | Adds one or more tracks to a specified playlist at an optional position. |
|
54
|
-
| reorder_or_replace_playlists_tracks | Reorders or replaces tracks in a playlist by moving, inserting, or replacing track entries using the specified parameters. |
|
55
|
-
| get_a_list_of_current_users_playlists | Retrieves a list of the current user's playlists with optional pagination controls. |
|
56
|
-
| get_users_saved_albums | Retrieves the current user's saved albums from the Spotify library with optional pagination and market filtering. |
|
57
|
-
| check_users_saved_albums | Checks if the specified albums are saved in the current user's Spotify library. |
|
58
|
-
| get_users_saved_tracks | Retrieves the current user's saved tracks from the Spotify library with optional filtering and pagination. |
|
59
|
-
| save_tracks_user | Saves one or more tracks to the current user's music library. |
|
60
|
-
| check_users_saved_tracks | Checks if the current user has saved specific tracks in their Spotify library. |
|
61
|
-
| get_users_saved_episodes | Retrieves the current user's saved podcast episodes from the service, with optional support for market, pagination, and result limits. |
|
62
|
-
| save_episodes_user | Saves episodes to the user's library using the provided list of episode IDs. |
|
63
|
-
| check_users_saved_episodes | Checks if the specified episodes are saved in the current user's library. |
|
64
|
-
| get_users_saved_shows | Retrieves the current user's saved shows from the Spotify API with optional pagination. |
|
65
|
-
| check_users_saved_shows | Checks if the specified shows are saved in the current user's library. |
|
66
|
-
| get_users_profile | Retrieves the profile information for a specific user by user ID. |
|
67
|
-
| get_list_users_playlists | Retrieves a list of playlists for a specified user. |
|
68
|
-
| create_playlist | Creates a new playlist for a specified user with optional visibility, collaboration, and description settings. |
|
69
|
-
| follow_playlist | Follows a Spotify playlist on behalf of the current user. |
|
70
|
-
| unfollow_playlist | Unfollows the specified playlist by deleting the current user's following relationship. |
|
71
|
-
| get_featured_playlists | Retrieves a list of Spotify's featured playlists with optional localization, result limiting, and pagination. |
|
72
|
-
| get_categories | Retrieves a list of category objects from the API with optional locale, limit, and offset filters. |
|
73
|
-
| get_a_category | Retrieve detailed information about a specific category by its ID, optionally localized to a given locale. |
|
74
|
-
| get_a_categories_playlists | Retrieves playlists associated with a specified category from the API. |
|
75
|
-
| get_playlist_cover | Retrieves the cover image(s) for a specified playlist by its unique ID. |
|
76
|
-
| get_new_releases | Retrieves a list of new music releases with optional pagination parameters. |
|
77
|
-
| get_followed | Retrieves the list of entities the current user is following, with support for pagination and limiting results. |
|
78
|
-
| follow_artists_users | Follows one or more artists or users on behalf of the current user. |
|
79
|
-
| check_current_user_follows | Check if the current user follows specific Spotify users or artists. |
|
80
|
-
| check_if_user_follows_playlist | Checks if one or more users follow a specified playlist. |
|
81
|
-
| get_several_audio_features | Retrieves audio feature information for multiple tracks using their IDs. |
|
82
|
-
| get_audio_features | Retrieves audio feature information for a given identifier from the API. |
|
83
|
-
| get_audio_analysis | Retrieves the audio analysis data for a specified audio ID from the API. |
|
84
|
-
| get_recommendations | Retrieves track recommendations based on a combination of seed values and audio feature constraints. |
|
85
|
-
| get_recommendation_genres | Retrieves a list of available genre seeds for recommendations from the remote API. |
|
86
|
-
| get_information_about_the_users_current_playback | Retrieves information about the user's current playback state from the music service. |
|
87
|
-
| transfer_a_users_playback | Transfers the playback of a user's current session to one or more specified devices. |
|
88
|
-
| get_a_users_available_devices | Retrieves the list of devices available to the current user for playback control. |
|
89
|
-
| get_the_users_currently_playing_track | Retrieves information about the track currently being played by the user. |
|
90
|
-
| start_a_users_playback | Starts or resumes playback of a user's Spotify player on the specified device, context, or track list. |
|
91
|
-
| pause_a_users_playback | Pauses the current playback for the authenticated user. |
|
92
|
-
| skip_users_playback_to_next_track | Skips the user's playback to the next track on the current or specified device. |
|
93
|
-
| skip_users_playback_to_previous_track | Skips the user's playback to the previous track on the active or specified device. |
|
94
|
-
| seek_to_position_in_currently_playing_track | Seeks to the specified position in the currently playing track for the user. |
|
95
|
-
| set_repeat_mode_on_users_playback | Sets the repeat mode for the current user's playback on Spotify, optionally targeting a specific device. |
|
96
|
-
| set_volume_for_users_playback | Set the playback volume for the current user's active device. |
|
97
|
-
| toggle_shuffle_for_users_playback | Toggles the shuffle state for the user's playback on the specified device. |
|
98
|
-
| get_recently_played | Retrieves the current user's recently played tracks from the Spotify API, optionally filtered by time or limited in count. |
|
99
|
-
| get_queue | Retrieves the current playback queue for the user from the music player API. |
|
100
|
-
| add_to_queue | Adds an item to the user's playback queue on the specified device using its URI. |
|
101
|
-
| get_available_markets | Retrieves a list of available markets from the API endpoint. |
|
102
|
-
| get_users_top_artists | Retrieves the current user's top artists from the API, supporting optional filtering by time range, result limit, and pagination offset. |
|
103
|
-
| get_users_top_tracks | Retrieves the current user's top tracks from the service within an optional time range, with pagination support. |
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
## Usage
|
108
|
-
|
109
|
-
- Login to AgentR
|
110
|
-
- Follow the quickstart guide to setup MCP Server for your client
|
111
|
-
- Visit Apps Store and enable the Spotify app
|
112
|
-
- Restart the MCP Server
|
113
|
-
|
114
|
-
### Local Development
|
115
|
-
|
116
|
-
- Follow the README to test with the local MCP Server
|
File without changes
|