universal-mcp-applications 0.1.1__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/ahrefs/README.md +51 -0
- universal_mcp/applications/ahrefs/__init__.py +1 -0
- universal_mcp/applications/ahrefs/app.py +2291 -0
- universal_mcp/applications/airtable/README.md +22 -0
- universal_mcp/applications/airtable/__init__.py +1 -0
- universal_mcp/applications/airtable/app.py +479 -0
- universal_mcp/applications/apollo/README.md +44 -0
- universal_mcp/applications/apollo/__init__.py +1 -0
- universal_mcp/applications/apollo/app.py +1847 -0
- universal_mcp/applications/asana/README.md +199 -0
- universal_mcp/applications/asana/__init__.py +1 -0
- universal_mcp/applications/asana/app.py +9509 -0
- universal_mcp/applications/aws-s3/README.md +0 -0
- universal_mcp/applications/aws-s3/__init__.py +1 -0
- universal_mcp/applications/aws-s3/app.py +552 -0
- universal_mcp/applications/bill/README.md +0 -0
- universal_mcp/applications/bill/__init__.py +1 -0
- universal_mcp/applications/bill/app.py +8705 -0
- universal_mcp/applications/box/README.md +307 -0
- universal_mcp/applications/box/__init__.py +1 -0
- universal_mcp/applications/box/app.py +15987 -0
- universal_mcp/applications/braze/README.md +106 -0
- universal_mcp/applications/braze/__init__.py +1 -0
- universal_mcp/applications/braze/app.py +4754 -0
- universal_mcp/applications/cal-com-v2/README.md +150 -0
- universal_mcp/applications/cal-com-v2/__init__.py +1 -0
- universal_mcp/applications/cal-com-v2/app.py +5541 -0
- universal_mcp/applications/calendly/README.md +53 -0
- universal_mcp/applications/calendly/__init__.py +1 -0
- universal_mcp/applications/calendly/app.py +1436 -0
- universal_mcp/applications/canva/README.md +43 -0
- universal_mcp/applications/canva/__init__.py +1 -0
- universal_mcp/applications/canva/app.py +941 -0
- universal_mcp/applications/clickup/README.md +135 -0
- universal_mcp/applications/clickup/__init__.py +1 -0
- universal_mcp/applications/clickup/app.py +5009 -0
- universal_mcp/applications/coda/README.md +108 -0
- universal_mcp/applications/coda/__init__.py +1 -0
- universal_mcp/applications/coda/app.py +3671 -0
- universal_mcp/applications/confluence/README.md +198 -0
- universal_mcp/applications/confluence/__init__.py +1 -0
- universal_mcp/applications/confluence/app.py +6273 -0
- universal_mcp/applications/contentful/README.md +17 -0
- universal_mcp/applications/contentful/__init__.py +1 -0
- universal_mcp/applications/contentful/app.py +364 -0
- universal_mcp/applications/crustdata/README.md +25 -0
- universal_mcp/applications/crustdata/__init__.py +1 -0
- universal_mcp/applications/crustdata/app.py +586 -0
- universal_mcp/applications/dialpad/README.md +202 -0
- universal_mcp/applications/dialpad/__init__.py +1 -0
- universal_mcp/applications/dialpad/app.py +5949 -0
- universal_mcp/applications/digitalocean/README.md +463 -0
- universal_mcp/applications/digitalocean/__init__.py +1 -0
- universal_mcp/applications/digitalocean/app.py +20835 -0
- universal_mcp/applications/domain-checker/README.md +13 -0
- universal_mcp/applications/domain-checker/__init__.py +1 -0
- universal_mcp/applications/domain-checker/app.py +265 -0
- universal_mcp/applications/e2b/README.md +12 -0
- universal_mcp/applications/e2b/__init__.py +1 -0
- universal_mcp/applications/e2b/app.py +187 -0
- universal_mcp/applications/elevenlabs/README.md +88 -0
- universal_mcp/applications/elevenlabs/__init__.py +1 -0
- universal_mcp/applications/elevenlabs/app.py +3235 -0
- universal_mcp/applications/exa/README.md +15 -0
- universal_mcp/applications/exa/__init__.py +1 -0
- universal_mcp/applications/exa/app.py +221 -0
- universal_mcp/applications/falai/README.md +17 -0
- universal_mcp/applications/falai/__init__.py +1 -0
- universal_mcp/applications/falai/app.py +331 -0
- universal_mcp/applications/figma/README.md +49 -0
- universal_mcp/applications/figma/__init__.py +1 -0
- universal_mcp/applications/figma/app.py +1090 -0
- universal_mcp/applications/firecrawl/README.md +20 -0
- universal_mcp/applications/firecrawl/__init__.py +1 -0
- universal_mcp/applications/firecrawl/app.py +514 -0
- universal_mcp/applications/fireflies/README.md +25 -0
- universal_mcp/applications/fireflies/__init__.py +1 -0
- universal_mcp/applications/fireflies/app.py +506 -0
- universal_mcp/applications/fpl/README.md +23 -0
- universal_mcp/applications/fpl/__init__.py +1 -0
- universal_mcp/applications/fpl/app.py +1327 -0
- universal_mcp/applications/fpl/utils/api.py +142 -0
- universal_mcp/applications/fpl/utils/fixtures.py +629 -0
- universal_mcp/applications/fpl/utils/helper.py +982 -0
- universal_mcp/applications/fpl/utils/league_utils.py +546 -0
- universal_mcp/applications/fpl/utils/position_utils.py +68 -0
- universal_mcp/applications/ghost-content/README.md +25 -0
- universal_mcp/applications/ghost-content/__init__.py +1 -0
- universal_mcp/applications/ghost-content/app.py +654 -0
- universal_mcp/applications/github/README.md +1049 -0
- universal_mcp/applications/github/__init__.py +1 -0
- universal_mcp/applications/github/app.py +50600 -0
- universal_mcp/applications/gong/README.md +63 -0
- universal_mcp/applications/gong/__init__.py +1 -0
- universal_mcp/applications/gong/app.py +2297 -0
- universal_mcp/applications/google-ads/README.md +0 -0
- universal_mcp/applications/google-ads/__init__.py +1 -0
- universal_mcp/applications/google-ads/app.py +23 -0
- universal_mcp/applications/google-calendar/README.md +21 -0
- universal_mcp/applications/google-calendar/__init__.py +1 -0
- universal_mcp/applications/google-calendar/app.py +574 -0
- universal_mcp/applications/google-docs/README.md +25 -0
- universal_mcp/applications/google-docs/__init__.py +1 -0
- universal_mcp/applications/google-docs/app.py +760 -0
- universal_mcp/applications/google-drive/README.md +68 -0
- universal_mcp/applications/google-drive/__init__.py +1 -0
- universal_mcp/applications/google-drive/app.py +4936 -0
- universal_mcp/applications/google-gemini/README.md +25 -0
- universal_mcp/applications/google-gemini/__init__.py +1 -0
- universal_mcp/applications/google-gemini/app.py +663 -0
- universal_mcp/applications/google-mail/README.md +31 -0
- universal_mcp/applications/google-mail/__init__.py +1 -0
- universal_mcp/applications/google-mail/app.py +1354 -0
- universal_mcp/applications/google-searchconsole/README.md +21 -0
- universal_mcp/applications/google-searchconsole/__init__.py +1 -0
- universal_mcp/applications/google-searchconsole/app.py +320 -0
- universal_mcp/applications/google-sheet/README.md +36 -0
- universal_mcp/applications/google-sheet/__init__.py +1 -0
- universal_mcp/applications/google-sheet/app.py +1941 -0
- universal_mcp/applications/hashnode/README.md +20 -0
- universal_mcp/applications/hashnode/__init__.py +1 -0
- universal_mcp/applications/hashnode/app.py +455 -0
- universal_mcp/applications/heygen/README.md +44 -0
- universal_mcp/applications/heygen/__init__.py +1 -0
- universal_mcp/applications/heygen/app.py +961 -0
- universal_mcp/applications/http-tools/README.md +16 -0
- universal_mcp/applications/http-tools/__init__.py +1 -0
- universal_mcp/applications/http-tools/app.py +153 -0
- universal_mcp/applications/hubspot/README.md +239 -0
- universal_mcp/applications/hubspot/__init__.py +1 -0
- universal_mcp/applications/hubspot/app.py +416 -0
- universal_mcp/applications/jira/README.md +600 -0
- universal_mcp/applications/jira/__init__.py +1 -0
- universal_mcp/applications/jira/app.py +28804 -0
- universal_mcp/applications/klaviyo/README.md +313 -0
- universal_mcp/applications/klaviyo/__init__.py +1 -0
- universal_mcp/applications/klaviyo/app.py +11236 -0
- universal_mcp/applications/linkedin/README.md +15 -0
- universal_mcp/applications/linkedin/__init__.py +1 -0
- universal_mcp/applications/linkedin/app.py +243 -0
- universal_mcp/applications/mailchimp/README.md +281 -0
- universal_mcp/applications/mailchimp/__init__.py +1 -0
- universal_mcp/applications/mailchimp/app.py +10937 -0
- universal_mcp/applications/markitdown/README.md +12 -0
- universal_mcp/applications/markitdown/__init__.py +1 -0
- universal_mcp/applications/markitdown/app.py +63 -0
- universal_mcp/applications/miro/README.md +151 -0
- universal_mcp/applications/miro/__init__.py +1 -0
- universal_mcp/applications/miro/app.py +5429 -0
- universal_mcp/applications/ms-teams/README.md +42 -0
- universal_mcp/applications/ms-teams/__init__.py +1 -0
- universal_mcp/applications/ms-teams/app.py +1823 -0
- universal_mcp/applications/neon/README.md +74 -0
- universal_mcp/applications/neon/__init__.py +1 -0
- universal_mcp/applications/neon/app.py +2018 -0
- universal_mcp/applications/notion/README.md +30 -0
- universal_mcp/applications/notion/__init__.py +1 -0
- universal_mcp/applications/notion/app.py +527 -0
- universal_mcp/applications/openai/README.md +22 -0
- universal_mcp/applications/openai/__init__.py +1 -0
- universal_mcp/applications/openai/app.py +759 -0
- universal_mcp/applications/outlook/README.md +20 -0
- universal_mcp/applications/outlook/__init__.py +1 -0
- universal_mcp/applications/outlook/app.py +444 -0
- universal_mcp/applications/perplexity/README.md +12 -0
- universal_mcp/applications/perplexity/__init__.py +1 -0
- universal_mcp/applications/perplexity/app.py +65 -0
- universal_mcp/applications/pipedrive/README.md +284 -0
- universal_mcp/applications/pipedrive/__init__.py +1 -0
- universal_mcp/applications/pipedrive/app.py +12924 -0
- universal_mcp/applications/posthog/README.md +132 -0
- universal_mcp/applications/posthog/__init__.py +1 -0
- universal_mcp/applications/posthog/app.py +7125 -0
- universal_mcp/applications/reddit/README.md +135 -0
- universal_mcp/applications/reddit/__init__.py +1 -0
- universal_mcp/applications/reddit/app.py +4652 -0
- universal_mcp/applications/replicate/README.md +18 -0
- universal_mcp/applications/replicate/__init__.py +1 -0
- universal_mcp/applications/replicate/app.py +495 -0
- universal_mcp/applications/resend/README.md +40 -0
- universal_mcp/applications/resend/__init__.py +1 -0
- universal_mcp/applications/resend/app.py +881 -0
- universal_mcp/applications/retell/README.md +21 -0
- universal_mcp/applications/retell/__init__.py +1 -0
- universal_mcp/applications/retell/app.py +333 -0
- universal_mcp/applications/rocketlane/README.md +70 -0
- universal_mcp/applications/rocketlane/__init__.py +1 -0
- universal_mcp/applications/rocketlane/app.py +4346 -0
- universal_mcp/applications/semanticscholar/README.md +25 -0
- universal_mcp/applications/semanticscholar/__init__.py +1 -0
- universal_mcp/applications/semanticscholar/app.py +482 -0
- universal_mcp/applications/semrush/README.md +44 -0
- universal_mcp/applications/semrush/__init__.py +1 -0
- universal_mcp/applications/semrush/app.py +2081 -0
- universal_mcp/applications/sendgrid/README.md +362 -0
- universal_mcp/applications/sendgrid/__init__.py +1 -0
- universal_mcp/applications/sendgrid/app.py +9752 -0
- universal_mcp/applications/sentry/README.md +186 -0
- universal_mcp/applications/sentry/__init__.py +1 -0
- universal_mcp/applications/sentry/app.py +7471 -0
- universal_mcp/applications/serpapi/README.md +14 -0
- universal_mcp/applications/serpapi/__init__.py +1 -0
- universal_mcp/applications/serpapi/app.py +293 -0
- universal_mcp/applications/sharepoint/README.md +0 -0
- universal_mcp/applications/sharepoint/__init__.py +1 -0
- universal_mcp/applications/sharepoint/app.py +215 -0
- universal_mcp/applications/shopify/README.md +321 -0
- universal_mcp/applications/shopify/__init__.py +1 -0
- universal_mcp/applications/shopify/app.py +15392 -0
- universal_mcp/applications/shortcut/README.md +128 -0
- universal_mcp/applications/shortcut/__init__.py +1 -0
- universal_mcp/applications/shortcut/app.py +4478 -0
- universal_mcp/applications/slack/README.md +0 -0
- universal_mcp/applications/slack/__init__.py +1 -0
- universal_mcp/applications/slack/app.py +570 -0
- universal_mcp/applications/spotify/README.md +91 -0
- universal_mcp/applications/spotify/__init__.py +1 -0
- universal_mcp/applications/spotify/app.py +2526 -0
- universal_mcp/applications/supabase/README.md +87 -0
- universal_mcp/applications/supabase/__init__.py +1 -0
- universal_mcp/applications/supabase/app.py +2970 -0
- universal_mcp/applications/tavily/README.md +12 -0
- universal_mcp/applications/tavily/__init__.py +1 -0
- universal_mcp/applications/tavily/app.py +51 -0
- universal_mcp/applications/trello/README.md +266 -0
- universal_mcp/applications/trello/__init__.py +1 -0
- universal_mcp/applications/trello/app.py +10875 -0
- universal_mcp/applications/twillo/README.md +0 -0
- universal_mcp/applications/twillo/__init__.py +1 -0
- universal_mcp/applications/twillo/app.py +269 -0
- universal_mcp/applications/twitter/README.md +100 -0
- universal_mcp/applications/twitter/__init__.py +1 -0
- universal_mcp/applications/twitter/api_segments/__init__.py +0 -0
- universal_mcp/applications/twitter/api_segments/api_segment_base.py +51 -0
- universal_mcp/applications/twitter/api_segments/compliance_api.py +122 -0
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +255 -0
- universal_mcp/applications/twitter/api_segments/dm_events_api.py +140 -0
- universal_mcp/applications/twitter/api_segments/likes_api.py +159 -0
- universal_mcp/applications/twitter/api_segments/lists_api.py +395 -0
- universal_mcp/applications/twitter/api_segments/openapi_json_api.py +34 -0
- universal_mcp/applications/twitter/api_segments/spaces_api.py +309 -0
- universal_mcp/applications/twitter/api_segments/trends_api.py +40 -0
- universal_mcp/applications/twitter/api_segments/tweets_api.py +1403 -0
- universal_mcp/applications/twitter/api_segments/usage_api.py +40 -0
- universal_mcp/applications/twitter/api_segments/users_api.py +1498 -0
- universal_mcp/applications/twitter/app.py +46 -0
- universal_mcp/applications/unipile/README.md +28 -0
- universal_mcp/applications/unipile/__init__.py +1 -0
- universal_mcp/applications/unipile/app.py +829 -0
- universal_mcp/applications/whatsapp/README.md +23 -0
- universal_mcp/applications/whatsapp/__init__.py +1 -0
- universal_mcp/applications/whatsapp/app.py +595 -0
- universal_mcp/applications/whatsapp-business/README.md +34 -0
- universal_mcp/applications/whatsapp-business/__init__.py +1 -0
- universal_mcp/applications/whatsapp-business/app.py +1065 -0
- universal_mcp/applications/wrike/README.md +46 -0
- universal_mcp/applications/wrike/__init__.py +1 -0
- universal_mcp/applications/wrike/app.py +1583 -0
- universal_mcp/applications/youtube/README.md +57 -0
- universal_mcp/applications/youtube/__init__.py +1 -0
- universal_mcp/applications/youtube/app.py +1696 -0
- universal_mcp/applications/zenquotes/README.md +12 -0
- universal_mcp/applications/zenquotes/__init__.py +1 -0
- universal_mcp/applications/zenquotes/app.py +31 -0
- universal_mcp_applications-0.1.1.dist-info/METADATA +172 -0
- universal_mcp_applications-0.1.1.dist-info/RECORD +268 -0
- universal_mcp_applications-0.1.1.dist-info/WHEEL +4 -0
- universal_mcp_applications-0.1.1.dist-info/licenses/LICENSE +21 -0
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .app import SlackApp
|
|
@@ -0,0 +1,570 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from universal_mcp.applications.application import APIApplication
|
|
4
|
+
from universal_mcp.integrations import Integration
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SlackApp(APIApplication):
|
|
8
|
+
def __init__(self, integration: Integration = None, **kwargs) -> None:
|
|
9
|
+
super().__init__(name="slack", integration=integration, **kwargs)
|
|
10
|
+
self.base_url = "https://slack.com/api"
|
|
11
|
+
|
|
12
|
+
def chat_delete(
|
|
13
|
+
self,
|
|
14
|
+
as_user: bool | None = None,
|
|
15
|
+
channel: str | None = None,
|
|
16
|
+
ts: float | None = None,
|
|
17
|
+
) -> dict[str, Any]:
|
|
18
|
+
"""
|
|
19
|
+
Deletes a message from a Slack channel using the provided token and returns a status message.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
as_user (boolean): Pass true to delete the message as the authed user with `chat:write:user` scope. [Bot users](https://slack.dev) in this context are considered authed users. If unused or false, the message will be deleted with `chat:write:bot` scope.
|
|
23
|
+
channel (string): Channel containing the message to be deleted.
|
|
24
|
+
ts (number): Timestamp of the message to be deleted.
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
dict[str, Any]: Typical success response
|
|
28
|
+
|
|
29
|
+
Raises:
|
|
30
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
31
|
+
|
|
32
|
+
Tags:
|
|
33
|
+
chat
|
|
34
|
+
"""
|
|
35
|
+
request_body_data = None
|
|
36
|
+
request_body_data = {
|
|
37
|
+
"as_user": as_user,
|
|
38
|
+
"channel": channel,
|
|
39
|
+
"ts": ts,
|
|
40
|
+
}
|
|
41
|
+
request_body_data = {
|
|
42
|
+
k: v for k, v in request_body_data.items() if v is not None
|
|
43
|
+
}
|
|
44
|
+
url = f"{self.base_url}/chat.delete"
|
|
45
|
+
query_params = {}
|
|
46
|
+
response = self._post(
|
|
47
|
+
url,
|
|
48
|
+
data=request_body_data,
|
|
49
|
+
params=query_params,
|
|
50
|
+
content_type="application/x-www-form-urlencoded",
|
|
51
|
+
)
|
|
52
|
+
return self._handle_response(response)
|
|
53
|
+
|
|
54
|
+
def chat_post_message(
|
|
55
|
+
self,
|
|
56
|
+
as_user: bool | None = None,
|
|
57
|
+
attachments: str | None = None,
|
|
58
|
+
blocks: str | None = None,
|
|
59
|
+
channel: str | None = None,
|
|
60
|
+
icon_emoji: str | None = None,
|
|
61
|
+
icon_url: str | None = None,
|
|
62
|
+
link_names: bool | None = None,
|
|
63
|
+
mrkdwn: bool | None = None,
|
|
64
|
+
parse: str | None = None,
|
|
65
|
+
reply_broadcast: bool | None = None,
|
|
66
|
+
text: str | None = None,
|
|
67
|
+
thread_ts: str | None = None,
|
|
68
|
+
unfurl_links: bool | None = None,
|
|
69
|
+
unfurl_media: bool | None = None,
|
|
70
|
+
username: str | None = None,
|
|
71
|
+
) -> dict[str, Any]:
|
|
72
|
+
"""
|
|
73
|
+
Sends a message to a Slack channel using the `chat.postMessage` method, which requires a valid authentication token and supports various message formats, including text, attachments, and blocks.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
as_user (boolean): Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See [authorship](https://slack.dev) below.
|
|
77
|
+
attachments (string): A JSON-based array of structured attachments, presented as a URL-encoded string.
|
|
78
|
+
blocks (string): A JSON-based array of structured blocks, presented as a URL-encoded string.
|
|
79
|
+
channel (string): Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name. See [below](https://slack.dev) for more details.
|
|
80
|
+
icon_emoji (string): Emoji to use as the icon for this message. Overrides `icon_url`. Must be used in conjunction with `as_user` set to `false`, otherwise ignored. See [authorship](https://slack.dev) below.
|
|
81
|
+
icon_url (string): URL to an image to use as the icon for this message. Must be used in conjunction with `as_user` set to false, otherwise ignored. See [authorship](https://slack.dev) below.
|
|
82
|
+
link_names (boolean): Find and link channel names and usernames.
|
|
83
|
+
mrkdwn (boolean): Disable Slack markup parsing by setting to `false`. Enabled by default.
|
|
84
|
+
parse (string): Change how messages are treated. Defaults to `none`. See [below](https://slack.dev).
|
|
85
|
+
reply_broadcast (boolean): Used in conjunction with `thread_ts` and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to `false`.
|
|
86
|
+
text (string): How this field works and whether it is required depends on other fields you use in your API call. [See below](https://slack.dev) for more detail.
|
|
87
|
+
thread_ts (string): Provide another message's `ts` value to make this message a reply. Avoid using a reply's `ts` value; use its parent instead.
|
|
88
|
+
unfurl_links (boolean): Pass true to enable unfurling of primarily text-based content.
|
|
89
|
+
unfurl_media (boolean): Pass false to disable unfurling of media content.
|
|
90
|
+
username (string): Set your bot's user name. Must be used in conjunction with `as_user` set to false, otherwise ignored. See [authorship](https://slack.dev) below.
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
dict[str, Any]: Typical success response
|
|
94
|
+
|
|
95
|
+
Raises:
|
|
96
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
97
|
+
|
|
98
|
+
Tags:
|
|
99
|
+
chat
|
|
100
|
+
"""
|
|
101
|
+
request_body_data = None
|
|
102
|
+
request_body_data = {
|
|
103
|
+
"as_user": as_user,
|
|
104
|
+
"attachments": attachments,
|
|
105
|
+
"blocks": blocks,
|
|
106
|
+
"channel": channel,
|
|
107
|
+
"icon_emoji": icon_emoji,
|
|
108
|
+
"icon_url": icon_url,
|
|
109
|
+
"link_names": link_names,
|
|
110
|
+
"mrkdwn": mrkdwn,
|
|
111
|
+
"parse": parse,
|
|
112
|
+
"reply_broadcast": reply_broadcast,
|
|
113
|
+
"text": text,
|
|
114
|
+
"thread_ts": thread_ts,
|
|
115
|
+
"unfurl_links": unfurl_links,
|
|
116
|
+
"unfurl_media": unfurl_media,
|
|
117
|
+
"username": username,
|
|
118
|
+
}
|
|
119
|
+
request_body_data = {
|
|
120
|
+
k: v for k, v in request_body_data.items() if v is not None
|
|
121
|
+
}
|
|
122
|
+
url = f"{self.base_url}/chat.postMessage"
|
|
123
|
+
query_params = {}
|
|
124
|
+
response = self._post(
|
|
125
|
+
url,
|
|
126
|
+
data=request_body_data,
|
|
127
|
+
params=query_params,
|
|
128
|
+
content_type="application/x-www-form-urlencoded",
|
|
129
|
+
)
|
|
130
|
+
return self._handle_response(response)
|
|
131
|
+
|
|
132
|
+
def chat_update(
|
|
133
|
+
self,
|
|
134
|
+
as_user: str | None = None,
|
|
135
|
+
attachments: str | None = None,
|
|
136
|
+
blocks: str | None = None,
|
|
137
|
+
channel: str | None = None,
|
|
138
|
+
link_names: str | None = None,
|
|
139
|
+
parse: str | None = None,
|
|
140
|
+
text: str | None = None,
|
|
141
|
+
ts: str | None = None,
|
|
142
|
+
) -> dict[str, Any]:
|
|
143
|
+
"""
|
|
144
|
+
Updates a message in a Slack channel using the "chat.update" API method, requiring a valid authentication token and supporting modifications to message content through parameters like "text," "blocks," or "attachments."
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
as_user (string): Pass true to update the message as the authed user. [Bot users](https://slack.dev) in this context are considered authed users.
|
|
148
|
+
attachments (string): A JSON-based array of structured attachments, presented as a URL-encoded string. This field is required when not presenting `text`. If you don't include this field, the message's previous `attachments` will be retained. To remove previous `attachments`, include an empty array for this field.
|
|
149
|
+
blocks (string): A JSON-based array of [structured blocks](https://slack.dev), presented as a URL-encoded string. If you don't include this field, the message's previous `blocks` will be retained. To remove previous `blocks`, include an empty array for this field.
|
|
150
|
+
channel (string): Channel containing the message to be updated.
|
|
151
|
+
link_names (string): Find and link channel names and usernames. Defaults to `none`. If you do not specify a value for this field, the original value set for the message will be overwritten with the default, `none`.
|
|
152
|
+
parse (string): Change how messages are treated. Defaults to `client`, unlike `chat.postMessage`. Accepts either `none` or `full`. If you do not specify a value for this field, the original value set for the message will be overwritten with the default, `client`.
|
|
153
|
+
text (string): New text for the message, using the [default formatting rules](https://slack.dev). It's not required when presenting `blocks` or `attachments`.
|
|
154
|
+
ts (string): Timestamp of the message to be updated.
|
|
155
|
+
|
|
156
|
+
Returns:
|
|
157
|
+
dict[str, Any]: Typical success response
|
|
158
|
+
|
|
159
|
+
Raises:
|
|
160
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
161
|
+
|
|
162
|
+
Tags:
|
|
163
|
+
chat
|
|
164
|
+
"""
|
|
165
|
+
request_body_data = None
|
|
166
|
+
request_body_data = {
|
|
167
|
+
"as_user": as_user,
|
|
168
|
+
"attachments": attachments,
|
|
169
|
+
"blocks": blocks,
|
|
170
|
+
"channel": channel,
|
|
171
|
+
"link_names": link_names,
|
|
172
|
+
"parse": parse,
|
|
173
|
+
"text": text,
|
|
174
|
+
"ts": ts,
|
|
175
|
+
}
|
|
176
|
+
request_body_data = {
|
|
177
|
+
k: v for k, v in request_body_data.items() if v is not None
|
|
178
|
+
}
|
|
179
|
+
url = f"{self.base_url}/chat.update"
|
|
180
|
+
query_params = {}
|
|
181
|
+
response = self._post(
|
|
182
|
+
url,
|
|
183
|
+
data=request_body_data,
|
|
184
|
+
params=query_params,
|
|
185
|
+
content_type="application/x-www-form-urlencoded",
|
|
186
|
+
)
|
|
187
|
+
return self._handle_response(response)
|
|
188
|
+
|
|
189
|
+
def conversations_history(
|
|
190
|
+
self,
|
|
191
|
+
token: str | None = None,
|
|
192
|
+
channel: str | None = None,
|
|
193
|
+
latest: float | None = None,
|
|
194
|
+
oldest: float | None = None,
|
|
195
|
+
inclusive: bool | None = None,
|
|
196
|
+
limit: int | None = None,
|
|
197
|
+
cursor: str | None = None,
|
|
198
|
+
) -> dict[str, Any]:
|
|
199
|
+
"""
|
|
200
|
+
Retrieves a portion of message events from a specified Slack conversation using the `conversations.history` method, allowing for pagination and filtering by timestamp.
|
|
201
|
+
|
|
202
|
+
Args:
|
|
203
|
+
token (string): Authentication token used to access conversation history.
|
|
204
|
+
channel (string): The ID of the channel to retrieve the conversation history from.
|
|
205
|
+
latest (number): Specifies the number of the latest conversation messages to retrieve from the history.
|
|
206
|
+
oldest (number): Timestamp (in seconds) of the oldest message to include in the conversation history results.
|
|
207
|
+
inclusive (boolean): Determines whether to include the messages at the end of the history range in the response.
|
|
208
|
+
limit (integer): Specifies the maximum number of conversation history entries to retrieve in a single API call.
|
|
209
|
+
cursor (string): A string token used for cursor-based pagination to fetch the next set of conversation history results starting from a specific point.
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
dict[str, Any]: Typical success response containing a channel's messages
|
|
213
|
+
|
|
214
|
+
Raises:
|
|
215
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
216
|
+
|
|
217
|
+
Tags:
|
|
218
|
+
conversations
|
|
219
|
+
"""
|
|
220
|
+
url = f"{self.base_url}/conversations.history"
|
|
221
|
+
query_params = {
|
|
222
|
+
k: v
|
|
223
|
+
for k, v in [
|
|
224
|
+
("token", token),
|
|
225
|
+
("channel", channel),
|
|
226
|
+
("latest", latest),
|
|
227
|
+
("oldest", oldest),
|
|
228
|
+
("inclusive", inclusive),
|
|
229
|
+
("limit", limit),
|
|
230
|
+
("cursor", cursor),
|
|
231
|
+
]
|
|
232
|
+
if v is not None
|
|
233
|
+
}
|
|
234
|
+
response = self._get(url, params=query_params)
|
|
235
|
+
return self._handle_response(response)
|
|
236
|
+
|
|
237
|
+
def conversations_list(
|
|
238
|
+
self,
|
|
239
|
+
token: str | None = None,
|
|
240
|
+
exclude_archived: bool | None = None,
|
|
241
|
+
types: str | None = None,
|
|
242
|
+
limit: int | None = None,
|
|
243
|
+
cursor: str | None = None,
|
|
244
|
+
) -> dict[str, Any]:
|
|
245
|
+
"""
|
|
246
|
+
Retrieves a list of all channel-like conversations in a Slack workspace, optionally excluding archived channels and supporting pagination using a cursor[1][2][3].
|
|
247
|
+
|
|
248
|
+
Args:
|
|
249
|
+
token (string): The token parameter in the query string is a string used for authentication to authorize and identify the client making the GET request to the /conversations.list endpoint.
|
|
250
|
+
exclude_archived (boolean): Exclude archived conversations from the list of results.
|
|
251
|
+
types (string): Specifies the types of conversations to include in the list, as a string query parameter.
|
|
252
|
+
limit (integer): Specifies the maximum number of conversations to return in the response, with a default value of 1.
|
|
253
|
+
cursor (string): A cursor string used for pagination to specify the position from which to continue retrieving the next set of conversation results.
|
|
254
|
+
|
|
255
|
+
Returns:
|
|
256
|
+
dict[str, Any]: Typical success response with only public channels
|
|
257
|
+
|
|
258
|
+
Raises:
|
|
259
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
260
|
+
|
|
261
|
+
Tags:
|
|
262
|
+
conversations
|
|
263
|
+
"""
|
|
264
|
+
url = f"{self.base_url}/conversations.list"
|
|
265
|
+
query_params = {
|
|
266
|
+
k: v
|
|
267
|
+
for k, v in [
|
|
268
|
+
("token", token),
|
|
269
|
+
("exclude_archived", exclude_archived),
|
|
270
|
+
("types", types),
|
|
271
|
+
("limit", limit),
|
|
272
|
+
("cursor", cursor),
|
|
273
|
+
]
|
|
274
|
+
if v is not None
|
|
275
|
+
}
|
|
276
|
+
response = self._get(url, params=query_params)
|
|
277
|
+
return self._handle_response(response)
|
|
278
|
+
|
|
279
|
+
def reactions_add(self, channel: str, name: str, timestamp: str) -> dict[str, Any]:
|
|
280
|
+
"""
|
|
281
|
+
Adds a reaction to an item in Slack using a POST request with an authorization token and required form data.
|
|
282
|
+
|
|
283
|
+
Args:
|
|
284
|
+
channel (string): Channel where the message to add reaction to was posted.
|
|
285
|
+
name (string): Reaction (emoji) name.
|
|
286
|
+
timestamp (string): Timestamp of the message to add reaction to.
|
|
287
|
+
|
|
288
|
+
Returns:
|
|
289
|
+
dict[str, Any]: Typical success response
|
|
290
|
+
|
|
291
|
+
Raises:
|
|
292
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
293
|
+
|
|
294
|
+
Tags:
|
|
295
|
+
reactions
|
|
296
|
+
"""
|
|
297
|
+
request_body_data = None
|
|
298
|
+
request_body_data = {
|
|
299
|
+
"channel": channel,
|
|
300
|
+
"name": name,
|
|
301
|
+
"timestamp": timestamp,
|
|
302
|
+
}
|
|
303
|
+
request_body_data = {
|
|
304
|
+
k: v for k, v in request_body_data.items() if v is not None
|
|
305
|
+
}
|
|
306
|
+
url = f"{self.base_url}/reactions.add"
|
|
307
|
+
query_params = {}
|
|
308
|
+
response = self._post(
|
|
309
|
+
url,
|
|
310
|
+
data=request_body_data,
|
|
311
|
+
params=query_params,
|
|
312
|
+
content_type="application/x-www-form-urlencoded",
|
|
313
|
+
)
|
|
314
|
+
return self._handle_response(response)
|
|
315
|
+
|
|
316
|
+
def reactions_get(
|
|
317
|
+
self,
|
|
318
|
+
token: str,
|
|
319
|
+
channel: str | None = None,
|
|
320
|
+
file: str | None = None,
|
|
321
|
+
file_comment: str | None = None,
|
|
322
|
+
full: bool | None = None,
|
|
323
|
+
timestamp: str | None = None,
|
|
324
|
+
) -> dict[str, Any]:
|
|
325
|
+
"""
|
|
326
|
+
Retrieves reaction information for a Slack message or file based on specified parameters such as channel, file, file comment, or timestamp, requiring a valid token with "reactions:read" scope.
|
|
327
|
+
|
|
328
|
+
Args:
|
|
329
|
+
token (string): The "token" parameter is a required string that must be provided in the query string for authentication purposes when using the GET operation at "/reactions.get" to authorize access to reaction data.
|
|
330
|
+
channel (string): The channel identifier to filter reactions by, specified as a string.
|
|
331
|
+
file (string): The file parameter specifies the identifier of the file for which to retrieve reactions.
|
|
332
|
+
file_comment (string): A query parameter to filter reactions by a specific file comment.
|
|
333
|
+
full (boolean): Whether to return full reaction details or only basic reaction information.
|
|
334
|
+
timestamp (string): The timestamp parameter filters results based on a specific date and time value, expected in an ISO 8601 format string.
|
|
335
|
+
|
|
336
|
+
Returns:
|
|
337
|
+
dict[str, Any]: Typical success response
|
|
338
|
+
|
|
339
|
+
Raises:
|
|
340
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
341
|
+
|
|
342
|
+
Tags:
|
|
343
|
+
reactions
|
|
344
|
+
"""
|
|
345
|
+
url = f"{self.base_url}/reactions.get"
|
|
346
|
+
query_params = {
|
|
347
|
+
k: v
|
|
348
|
+
for k, v in [
|
|
349
|
+
("token", token),
|
|
350
|
+
("channel", channel),
|
|
351
|
+
("file", file),
|
|
352
|
+
("file_comment", file_comment),
|
|
353
|
+
("full", full),
|
|
354
|
+
("timestamp", timestamp),
|
|
355
|
+
]
|
|
356
|
+
if v is not None
|
|
357
|
+
}
|
|
358
|
+
response = self._get(url, params=query_params)
|
|
359
|
+
return self._handle_response(response)
|
|
360
|
+
|
|
361
|
+
def reactions_list(
|
|
362
|
+
self,
|
|
363
|
+
token: str,
|
|
364
|
+
user: str | None = None,
|
|
365
|
+
full: bool | None = None,
|
|
366
|
+
count: int | None = None,
|
|
367
|
+
page: int | None = None,
|
|
368
|
+
cursor: str | None = None,
|
|
369
|
+
limit: int | None = None,
|
|
370
|
+
) -> dict[str, Any]:
|
|
371
|
+
"""
|
|
372
|
+
Retrieves a paginated list of reactions, supporting filtering by user and additional query parameters for granular results.
|
|
373
|
+
|
|
374
|
+
Args:
|
|
375
|
+
token (string): Required authentication token passed as a query parameter to authenticate the request for listing reactions.
|
|
376
|
+
user (string): Filter reactions by specifying the user, which can be a username or identifier.
|
|
377
|
+
full (boolean): Indicates whether to retrieve a full list of reactions, with `true` returning all reactions and `false` returning a partial list.
|
|
378
|
+
count (integer): The "count" query parameter specifies the maximum number of reaction items to return in the response.
|
|
379
|
+
page (integer): The "page" parameter is an integer query parameter used to specify the page number for pagination in the list of reactions.
|
|
380
|
+
cursor (string): A string used to specify the position in the list of reactions for pagination, allowing retrieval of additional items after or before the specified cursor.
|
|
381
|
+
limit (integer): The `limit` parameter specifies the maximum number of reactions to return in the response.
|
|
382
|
+
|
|
383
|
+
Returns:
|
|
384
|
+
dict[str, Any]: Typical success response
|
|
385
|
+
|
|
386
|
+
Raises:
|
|
387
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
388
|
+
|
|
389
|
+
Tags:
|
|
390
|
+
reactions
|
|
391
|
+
"""
|
|
392
|
+
url = f"{self.base_url}/reactions.list"
|
|
393
|
+
query_params = {
|
|
394
|
+
k: v
|
|
395
|
+
for k, v in [
|
|
396
|
+
("token", token),
|
|
397
|
+
("user", user),
|
|
398
|
+
("full", full),
|
|
399
|
+
("count", count),
|
|
400
|
+
("page", page),
|
|
401
|
+
("cursor", cursor),
|
|
402
|
+
("limit", limit),
|
|
403
|
+
]
|
|
404
|
+
if v is not None
|
|
405
|
+
}
|
|
406
|
+
response = self._get(url, params=query_params)
|
|
407
|
+
return self._handle_response(response)
|
|
408
|
+
|
|
409
|
+
def search_messages(
|
|
410
|
+
self,
|
|
411
|
+
token: str,
|
|
412
|
+
query: str,
|
|
413
|
+
count: int | None = None,
|
|
414
|
+
highlight: bool | None = None,
|
|
415
|
+
page: int | None = None,
|
|
416
|
+
sort: str | None = None,
|
|
417
|
+
sort_dir: str | None = None,
|
|
418
|
+
) -> dict[str, Any]:
|
|
419
|
+
"""
|
|
420
|
+
Searches for and retrieves Slack messages matching a specified query, with options for pagination, sorting, and query highlighting[1][2].
|
|
421
|
+
|
|
422
|
+
Args:
|
|
423
|
+
token (string): A required string parameter named "token" passed as a query parameter to authenticate the request for retrieving search messages.
|
|
424
|
+
query (string): The search query string to specify the text or keywords to search for in messages.
|
|
425
|
+
count (integer): Optional integer parameter "count" specifying the number of search messages to return, defaulting to 1 if not provided.
|
|
426
|
+
highlight (boolean): Indicates whether to highlight specific parts of the search results in the messages.
|
|
427
|
+
page (integer): The page query parameter specifies the page number of search results to retrieve in the GET /search.messages operation.
|
|
428
|
+
sort (string): Sorts the search results by a specified field, allowing clients to customize the order of returned messages.
|
|
429
|
+
sort_dir (string): The "sort_dir" query parameter specifies the direction of sorting for the search results, typically accepting values like "asc" for ascending or "desc" for descending order.
|
|
430
|
+
|
|
431
|
+
Returns:
|
|
432
|
+
dict[str, Any]: Typical success response
|
|
433
|
+
|
|
434
|
+
Raises:
|
|
435
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
436
|
+
|
|
437
|
+
Tags:
|
|
438
|
+
search
|
|
439
|
+
"""
|
|
440
|
+
url = f"{self.base_url}/search.messages"
|
|
441
|
+
query_params = {
|
|
442
|
+
k: v
|
|
443
|
+
for k, v in [
|
|
444
|
+
("token", token),
|
|
445
|
+
("count", count),
|
|
446
|
+
("highlight", highlight),
|
|
447
|
+
("page", page),
|
|
448
|
+
("query", query),
|
|
449
|
+
("sort", sort),
|
|
450
|
+
("sort_dir", sort_dir),
|
|
451
|
+
]
|
|
452
|
+
if v is not None
|
|
453
|
+
}
|
|
454
|
+
response = self._get(url, params=query_params)
|
|
455
|
+
return self._handle_response(response)
|
|
456
|
+
|
|
457
|
+
def team_info(self, token: str, team: str | None = None) -> dict[str, Any]:
|
|
458
|
+
"""
|
|
459
|
+
Retrieves information about a Slack team, including its custom icon and basic details, using a provided authentication token[1][3][4].
|
|
460
|
+
|
|
461
|
+
Args:
|
|
462
|
+
token (string): Mandatory authentication token passed as a query parameter to authenticate the request for retrieving team information.
|
|
463
|
+
team (string): The "team" parameter is a query string parameter of type string, used to specify the team for which information is requested in the GET operation at the "/team.info" path.
|
|
464
|
+
|
|
465
|
+
Returns:
|
|
466
|
+
dict[str, Any]: Typical success response
|
|
467
|
+
|
|
468
|
+
Raises:
|
|
469
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
470
|
+
|
|
471
|
+
Tags:
|
|
472
|
+
team
|
|
473
|
+
"""
|
|
474
|
+
url = f"{self.base_url}/team.info"
|
|
475
|
+
query_params = {
|
|
476
|
+
k: v for k, v in [("token", token), ("team", team)] if v is not None
|
|
477
|
+
}
|
|
478
|
+
response = self._get(url, params=query_params)
|
|
479
|
+
return self._handle_response(response)
|
|
480
|
+
|
|
481
|
+
def users_info(
|
|
482
|
+
self,
|
|
483
|
+
token: str,
|
|
484
|
+
include_locale: bool | None = None,
|
|
485
|
+
user: str | None = None,
|
|
486
|
+
) -> dict[str, Any]:
|
|
487
|
+
"""
|
|
488
|
+
Retrieves information about a specific Slack workspace member using the `users.info` method, returning a user object that includes profile details such as name and display name.
|
|
489
|
+
|
|
490
|
+
Args:
|
|
491
|
+
token (string): The token query parameter is a required string used to authenticate and authorize the API request to access user information in the GET /users.info operation.
|
|
492
|
+
include_locale (boolean): Indicates whether to include locale information in the response, with a value of true or false.
|
|
493
|
+
user (string): A string parameter used to identify or specify a user in the request.
|
|
494
|
+
|
|
495
|
+
Returns:
|
|
496
|
+
dict[str, Any]: Typical success response
|
|
497
|
+
|
|
498
|
+
Raises:
|
|
499
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
500
|
+
|
|
501
|
+
Tags:
|
|
502
|
+
users
|
|
503
|
+
"""
|
|
504
|
+
url = f"{self.base_url}/users.info"
|
|
505
|
+
query_params = {
|
|
506
|
+
k: v
|
|
507
|
+
for k, v in [
|
|
508
|
+
("token", token),
|
|
509
|
+
("include_locale", include_locale),
|
|
510
|
+
("user", user),
|
|
511
|
+
]
|
|
512
|
+
if v is not None
|
|
513
|
+
}
|
|
514
|
+
response = self._get(url, params=query_params)
|
|
515
|
+
return self._handle_response(response)
|
|
516
|
+
|
|
517
|
+
def users_list(
|
|
518
|
+
self,
|
|
519
|
+
token: str | None = None,
|
|
520
|
+
limit: int | None = None,
|
|
521
|
+
cursor: str | None = None,
|
|
522
|
+
include_locale: bool | None = None,
|
|
523
|
+
) -> dict[str, Any]:
|
|
524
|
+
"""
|
|
525
|
+
Retrieves a list of all users in a Slack workspace, using the "GET" method, including both invited and deactivated users, with optional parameters for limiting results and pagination.
|
|
526
|
+
|
|
527
|
+
Args:
|
|
528
|
+
token (string): Required authentication token for accessing the list of users.
|
|
529
|
+
limit (integer): Specifies the maximum number of users to return in the response, defaults to 1.
|
|
530
|
+
cursor (string): A unique string identifier used for cursor-based pagination, indicating the starting point for retrieving the next set of users in the list.
|
|
531
|
+
include_locale (boolean): A boolean query parameter to optionally include locale information in the response.
|
|
532
|
+
|
|
533
|
+
Returns:
|
|
534
|
+
dict[str, Any]: Typical success response
|
|
535
|
+
|
|
536
|
+
Raises:
|
|
537
|
+
HTTPStatusError: Raised when the API request fails with detailed error information including status code and response body.
|
|
538
|
+
|
|
539
|
+
Tags:
|
|
540
|
+
users
|
|
541
|
+
"""
|
|
542
|
+
url = f"{self.base_url}/users.list"
|
|
543
|
+
query_params = {
|
|
544
|
+
k: v
|
|
545
|
+
for k, v in [
|
|
546
|
+
("token", token),
|
|
547
|
+
("limit", limit),
|
|
548
|
+
("cursor", cursor),
|
|
549
|
+
("include_locale", include_locale),
|
|
550
|
+
]
|
|
551
|
+
if v is not None
|
|
552
|
+
}
|
|
553
|
+
response = self._get(url, params=query_params)
|
|
554
|
+
return self._handle_response(response)
|
|
555
|
+
|
|
556
|
+
def list_tools(self):
|
|
557
|
+
return [
|
|
558
|
+
self.chat_delete,
|
|
559
|
+
self.chat_post_message,
|
|
560
|
+
self.chat_update,
|
|
561
|
+
self.conversations_history,
|
|
562
|
+
self.conversations_list,
|
|
563
|
+
self.reactions_add,
|
|
564
|
+
self.reactions_get,
|
|
565
|
+
self.reactions_list,
|
|
566
|
+
self.search_messages,
|
|
567
|
+
self.team_info,
|
|
568
|
+
self.users_info,
|
|
569
|
+
self.users_list,
|
|
570
|
+
]
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Spotify MCP Server
|
|
2
|
+
|
|
3
|
+
An MCP Server for the Spotify API.
|
|
4
|
+
|
|
5
|
+
## 🛠️ Tool List
|
|
6
|
+
|
|
7
|
+
This is automatically generated from OpenAPI schema for the Spotify API.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
| Tool | Description |
|
|
11
|
+
|------|-------------|
|
|
12
|
+
| `get_an_album` | Retrieves detailed information about a specific album by its ID from the API. |
|
|
13
|
+
| `get_multiple_albums` | Retrieves detailed information for multiple albums by their IDs from the API. |
|
|
14
|
+
| `get_an_albums_tracks` | Retrieves the list of tracks for a specified album from the API, with optional filtering and pagination. |
|
|
15
|
+
| `get_an_artist` | Retrieve detailed information about a specific artist by their unique identifier. |
|
|
16
|
+
| `get_multiple_artists` | Retrieves information for multiple artists using their IDs. |
|
|
17
|
+
| `get_an_artists_albums` | Retrieves a list of albums for the specified artist from the API. |
|
|
18
|
+
| `get_an_artists_top_tracks` | Retrieves the top tracks for a specified artist from the API. |
|
|
19
|
+
| `get_an_artists_related_artists` | Retrieves a list of artists related to the specified artist by their unique ID. |
|
|
20
|
+
| `get_a_show` | Retrieve detailed information about a show by its unique identifier. |
|
|
21
|
+
| `get_multiple_shows` | Retrieves information for multiple shows by their IDs, with optional market filtering. |
|
|
22
|
+
| `get_a_shows_episodes` | Retrieves episodes for a specific show from the API with optional market, limit, and offset parameters. |
|
|
23
|
+
| `get_an_episode` | Retrieves a single podcast episode's details by its unique identifier. |
|
|
24
|
+
| `get_multiple_episodes` | Retrieves details for multiple podcast episodes using their IDs, optionally filtered by market. |
|
|
25
|
+
| `get_an_audiobook` | Retrieves detailed information about a specific audiobook by ID, optionally filtered by market. |
|
|
26
|
+
| `get_multiple_audiobooks` | Fetches details for multiple audiobooks by their IDs, optionally filtered by market. |
|
|
27
|
+
| `get_audiobook_chapters` | Retrieves the chapters for a specified audiobook from the API. |
|
|
28
|
+
| `get_users_saved_audiobooks` | Retrieves the current user's saved audiobooks from the API with optional pagination. |
|
|
29
|
+
| `save_audiobooks_user` | Saves one or more audiobooks to the current user's library. |
|
|
30
|
+
| `remove_audiobooks_user` | Removes one or more audiobooks from the authenticated user's library. |
|
|
31
|
+
| `check_users_saved_audiobooks` | Checks if the specified audiobooks are saved in the current user's library. |
|
|
32
|
+
| `get_a_chapter` | Retrieves a specific chapter's details by ID from the API, optionally filtering by market. |
|
|
33
|
+
| `get_several_chapters` | Retrieve details for multiple chapters based on their IDs, optionally filtering by market. |
|
|
34
|
+
| `get_track` | Retrieves detailed information about a track by its unique identifier from the external API. |
|
|
35
|
+
| `get_several_tracks` | Retrieves metadata for multiple tracks based on their IDs from the API. |
|
|
36
|
+
| `search` | Performs a search query against the API and returns the matching results as a JSON object. |
|
|
37
|
+
| `get_current_users_profile` | Retrieves the current authenticated user's profile information from the API. |
|
|
38
|
+
| `get_playlist` | Retrieves a playlist from the API using the specified playlist ID. |
|
|
39
|
+
| `change_playlist_details` | Update the details of an existing playlist with the specified attributes. |
|
|
40
|
+
| `get_playlists_tracks` | Retrieves the tracks of a specified playlist from the API, applying optional filters and pagination parameters. |
|
|
41
|
+
| `add_tracks_to_playlist` | Adds one or more tracks to a specified playlist at an optional position. |
|
|
42
|
+
| `reorder_or_replace_playlists_tracks` | Reorders or replaces tracks in a playlist by moving, inserting, or replacing track entries using the specified parameters. |
|
|
43
|
+
| `get_a_list_of_current_users_playlists` | Retrieves a list of the current user's playlists with optional pagination controls. |
|
|
44
|
+
| `get_users_saved_albums` | Retrieves the current user's saved albums from the Spotify library with optional pagination and market filtering. |
|
|
45
|
+
| `check_users_saved_albums` | Checks if the specified albums are saved in the current user's Spotify library. |
|
|
46
|
+
| `get_users_saved_tracks` | Retrieves the current user's saved tracks from the Spotify library with optional filtering and pagination. |
|
|
47
|
+
| `save_tracks_user` | Saves one or more tracks to the current user's music library. |
|
|
48
|
+
| `check_users_saved_tracks` | Checks if the current user has saved specific tracks in their Spotify library. |
|
|
49
|
+
| `get_users_saved_episodes` | Retrieves the current user's saved podcast episodes from the service, with optional support for market, pagination, and result limits. |
|
|
50
|
+
| `save_episodes_user` | Saves episodes to the user's library using the provided list of episode IDs. |
|
|
51
|
+
| `check_users_saved_episodes` | Checks if the specified episodes are saved in the current user's library. |
|
|
52
|
+
| `get_users_saved_shows` | Retrieves the current user's saved shows from the Spotify API with optional pagination. |
|
|
53
|
+
| `check_users_saved_shows` | Checks if the specified shows are saved in the current user's library. |
|
|
54
|
+
| `get_users_profile` | Retrieves the profile information for a specific user by user ID. |
|
|
55
|
+
| `get_list_users_playlists` | Retrieves a list of playlists for a specified user. |
|
|
56
|
+
| `create_playlist` | Creates a new playlist for a specified user with optional visibility, collaboration, and description settings. |
|
|
57
|
+
| `follow_playlist` | Follows a Spotify playlist on behalf of the current user. |
|
|
58
|
+
| `unfollow_playlist` | Unfollows the specified playlist by deleting the current user's following relationship. |
|
|
59
|
+
| `get_featured_playlists` | Retrieves a list of Spotify's featured playlists with optional localization, result limiting, and pagination. |
|
|
60
|
+
| `get_categories` | Retrieves a list of category objects from the API with optional locale, limit, and offset filters. |
|
|
61
|
+
| `get_a_category` | Retrieve detailed information about a specific category by its ID, optionally localized to a given locale. |
|
|
62
|
+
| `get_a_categories_playlists` | Retrieves playlists associated with a specified category from the API. |
|
|
63
|
+
| `get_playlist_cover` | Retrieves the cover image(s) for a specified playlist by its unique ID. |
|
|
64
|
+
| `get_new_releases` | Retrieves a list of new music releases with optional pagination parameters. |
|
|
65
|
+
| `get_followed` | Retrieves the list of entities the current user is following, with support for pagination and limiting results. |
|
|
66
|
+
| `follow_artists_users` | Follows one or more artists or users on behalf of the current user. |
|
|
67
|
+
| `check_current_user_follows` | Check if the current user follows specific Spotify users or artists. |
|
|
68
|
+
| `check_if_user_follows_playlist` | Checks if one or more users follow a specified playlist. |
|
|
69
|
+
| `get_several_audio_features` | Retrieves audio feature information for multiple tracks using their IDs. |
|
|
70
|
+
| `get_audio_features` | Retrieves audio feature information for a given identifier from the API. |
|
|
71
|
+
| `get_audio_analysis` | Retrieves the audio analysis data for a specified audio ID from the API. |
|
|
72
|
+
| `get_recommendations` | Retrieves track recommendations based on a combination of seed values and audio feature constraints. |
|
|
73
|
+
| `get_recommendation_genres` | Retrieves a list of available genre seeds for recommendations from the remote API. |
|
|
74
|
+
| `get_information_about_the_users_current_playback` | Retrieves information about the user's current playback state from the music service. |
|
|
75
|
+
| `transfer_a_users_playback` | Transfers the playback of a user's current session to one or more specified devices. |
|
|
76
|
+
| `get_a_users_available_devices` | Retrieves the list of devices available to the current user for playback control. |
|
|
77
|
+
| `get_the_users_currently_playing_track` | Retrieves information about the track currently being played by the user. |
|
|
78
|
+
| `start_a_users_playback` | Starts or resumes playback of a user's Spotify player on the specified device, context, or track list. |
|
|
79
|
+
| `pause_a_users_playback` | Pauses the current playback for the authenticated user. |
|
|
80
|
+
| `skip_users_playback_to_next_track` | Skips the user's playback to the next track on the current or specified device. |
|
|
81
|
+
| `skip_users_playback_to_previous_track` | Skips the user's playback to the previous track on the active or specified device. |
|
|
82
|
+
| `seek_to_position_in_currently_playing_track` | Seeks to the specified position in the currently playing track for the user. |
|
|
83
|
+
| `set_repeat_mode_on_users_playback` | Sets the repeat mode for the current user's playback on Spotify, optionally targeting a specific device. |
|
|
84
|
+
| `set_volume_for_users_playback` | Set the playback volume for the current user's active device. |
|
|
85
|
+
| `toggle_shuffle_for_users_playback` | Toggles the shuffle state for the user's playback on the specified device. |
|
|
86
|
+
| `get_recently_played` | Retrieves the current user's recently played tracks from the Spotify API, optionally filtered by time or limited in count. |
|
|
87
|
+
| `get_queue` | Retrieves the current playback queue for the user from the music player API. |
|
|
88
|
+
| `add_to_queue` | Adds an item to the user's playback queue on the specified device using its URI. |
|
|
89
|
+
| `get_available_markets` | Retrieves a list of available markets from the API endpoint. |
|
|
90
|
+
| `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. |
|
|
91
|
+
| `get_users_top_tracks` | Retrieves the current user's top tracks from the service within an optional time range, with pagination support. |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .app import SpotifyApp
|