universal-mcp 0.1.13rc1__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.
Files changed (99) hide show
  1. {universal_mcp-0.1.13rc1.dist-info → universal_mcp-0.1.13rc2.dist-info}/METADATA +1 -1
  2. universal_mcp-0.1.13rc2.dist-info/RECORD +38 -0
  3. universal_mcp/applications/ahrefs/README.md +0 -76
  4. universal_mcp/applications/ahrefs/__init__.py +0 -0
  5. universal_mcp/applications/ahrefs/app.py +0 -2291
  6. universal_mcp/applications/cal_com_v2/README.md +0 -175
  7. universal_mcp/applications/cal_com_v2/__init__.py +0 -0
  8. universal_mcp/applications/cal_com_v2/app.py +0 -5390
  9. universal_mcp/applications/calendly/README.md +0 -78
  10. universal_mcp/applications/calendly/__init__.py +0 -0
  11. universal_mcp/applications/calendly/app.py +0 -1195
  12. universal_mcp/applications/clickup/README.md +0 -160
  13. universal_mcp/applications/clickup/__init__.py +0 -0
  14. universal_mcp/applications/clickup/app.py +0 -5009
  15. universal_mcp/applications/coda/README.md +0 -133
  16. universal_mcp/applications/coda/__init__.py +0 -0
  17. universal_mcp/applications/coda/app.py +0 -3671
  18. universal_mcp/applications/curstdata/README.md +0 -50
  19. universal_mcp/applications/curstdata/__init__.py +0 -0
  20. universal_mcp/applications/curstdata/app.py +0 -551
  21. universal_mcp/applications/e2b/README.md +0 -37
  22. universal_mcp/applications/e2b/app.py +0 -65
  23. universal_mcp/applications/elevenlabs/README.md +0 -84
  24. universal_mcp/applications/elevenlabs/__init__.py +0 -0
  25. universal_mcp/applications/elevenlabs/app.py +0 -1402
  26. universal_mcp/applications/falai/README.md +0 -42
  27. universal_mcp/applications/falai/__init__.py +0 -0
  28. universal_mcp/applications/falai/app.py +0 -332
  29. universal_mcp/applications/figma/README.md +0 -74
  30. universal_mcp/applications/figma/__init__.py +0 -0
  31. universal_mcp/applications/figma/app.py +0 -1261
  32. universal_mcp/applications/firecrawl/README.md +0 -45
  33. universal_mcp/applications/firecrawl/app.py +0 -268
  34. universal_mcp/applications/github/README.md +0 -47
  35. universal_mcp/applications/github/app.py +0 -429
  36. universal_mcp/applications/gong/README.md +0 -88
  37. universal_mcp/applications/gong/__init__.py +0 -0
  38. universal_mcp/applications/gong/app.py +0 -2297
  39. universal_mcp/applications/google_calendar/app.py +0 -442
  40. universal_mcp/applications/google_docs/README.md +0 -40
  41. universal_mcp/applications/google_docs/app.py +0 -88
  42. universal_mcp/applications/google_drive/README.md +0 -44
  43. universal_mcp/applications/google_drive/app.py +0 -286
  44. universal_mcp/applications/google_mail/README.md +0 -47
  45. universal_mcp/applications/google_mail/app.py +0 -664
  46. universal_mcp/applications/google_sheet/README.md +0 -42
  47. universal_mcp/applications/google_sheet/app.py +0 -150
  48. universal_mcp/applications/heygen/README.md +0 -69
  49. universal_mcp/applications/heygen/__init__.py +0 -0
  50. universal_mcp/applications/heygen/app.py +0 -956
  51. universal_mcp/applications/mailchimp/README.md +0 -306
  52. universal_mcp/applications/mailchimp/__init__.py +0 -0
  53. universal_mcp/applications/mailchimp/app.py +0 -10937
  54. universal_mcp/applications/markitdown/app.py +0 -44
  55. universal_mcp/applications/neon/README.md +0 -99
  56. universal_mcp/applications/neon/__init__.py +0 -0
  57. universal_mcp/applications/neon/app.py +0 -1924
  58. universal_mcp/applications/notion/README.md +0 -55
  59. universal_mcp/applications/notion/__init__.py +0 -0
  60. universal_mcp/applications/notion/app.py +0 -527
  61. universal_mcp/applications/perplexity/README.md +0 -37
  62. universal_mcp/applications/perplexity/app.py +0 -65
  63. universal_mcp/applications/reddit/README.md +0 -45
  64. universal_mcp/applications/reddit/app.py +0 -379
  65. universal_mcp/applications/replicate/README.md +0 -65
  66. universal_mcp/applications/replicate/__init__.py +0 -0
  67. universal_mcp/applications/replicate/app.py +0 -980
  68. universal_mcp/applications/resend/README.md +0 -38
  69. universal_mcp/applications/resend/app.py +0 -37
  70. universal_mcp/applications/retell_ai/README.md +0 -46
  71. universal_mcp/applications/retell_ai/__init__.py +0 -0
  72. universal_mcp/applications/retell_ai/app.py +0 -333
  73. universal_mcp/applications/rocketlane/README.md +0 -42
  74. universal_mcp/applications/rocketlane/__init__.py +0 -0
  75. universal_mcp/applications/rocketlane/app.py +0 -194
  76. universal_mcp/applications/serpapi/README.md +0 -37
  77. universal_mcp/applications/serpapi/app.py +0 -73
  78. universal_mcp/applications/shortcut/README.md +0 -153
  79. universal_mcp/applications/shortcut/__init__.py +0 -0
  80. universal_mcp/applications/shortcut/app.py +0 -3880
  81. universal_mcp/applications/spotify/README.md +0 -116
  82. universal_mcp/applications/spotify/__init__.py +0 -0
  83. universal_mcp/applications/spotify/app.py +0 -2526
  84. universal_mcp/applications/supabase/README.md +0 -112
  85. universal_mcp/applications/supabase/__init__.py +0 -0
  86. universal_mcp/applications/supabase/app.py +0 -2970
  87. universal_mcp/applications/tavily/README.md +0 -38
  88. universal_mcp/applications/tavily/app.py +0 -51
  89. universal_mcp/applications/wrike/README.md +0 -71
  90. universal_mcp/applications/wrike/__init__.py +0 -0
  91. universal_mcp/applications/wrike/app.py +0 -1372
  92. universal_mcp/applications/youtube/README.md +0 -82
  93. universal_mcp/applications/youtube/__init__.py +0 -0
  94. universal_mcp/applications/youtube/app.py +0 -1428
  95. universal_mcp/applications/zenquotes/README.md +0 -37
  96. universal_mcp/applications/zenquotes/app.py +0 -31
  97. universal_mcp-0.1.13rc1.dist-info/RECORD +0 -132
  98. {universal_mcp-0.1.13rc1.dist-info → universal_mcp-0.1.13rc2.dist-info}/WHEEL +0 -0
  99. {universal_mcp-0.1.13rc1.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,153 +0,0 @@
1
-
2
- # Shortcut MCP Server
3
-
4
- An MCP Server for the Shortcut 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 Shortcut 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
- | list_categories | Retrieves a list of categories from the API. |
25
- | create_category | Creates a new category with the specified parameters. |
26
- | get_category | Fetches a category by its public ID. |
27
- | update_category | Updates a category with the specified attributes. |
28
- | delete_category | Deletes a category by its public ID. |
29
- | list_category_milestones | Lists all milestones associated with a specified category. |
30
- | list_category_objectives | Fetches and lists objectives for a given category based on its public ID. |
31
- | list_custom_fields | Retrieves a list of custom fields from the API. |
32
- | get_custom_field | Retrieves a custom field by its public ID. |
33
- | update_custom_field | Updates an existing custom field's attributes with the provided values. |
34
- | delete_custom_field | Deletes a custom field specified by its public identifier. |
35
- | list_entity_templates | Retrieves a list of entity templates from an API endpoint. |
36
- | create_entity_template | Creates an entity template with the provided name, story contents, and optional author ID. |
37
- | disable_story_templates | Disables story entity templates by sending a PUT request to the API endpoint. |
38
- | enable_story_templates | Enables story templates by making a PUT request to the entity-templates endpoint. |
39
- | get_entity_template | Retrieves a specific entity template by its public ID. |
40
- | update_entity_template | Updates an entity template using the provided public ID, optionally setting its name and story contents. |
41
- | delete_entity_template | Deletes an entity template by its public ID. |
42
- | get_epic_workflow | Retrieves the epic workflow configuration from the API. |
43
- | list_epics | Fetches a list of epics from the API. |
44
- | create_epic | Creates a new epic in the project management system with the specified properties. |
45
- | get_epic | Fetches an epic by its public ID |
46
- | update_epic | Updates an epic with the provided details. |
47
- | delete_epic | Deletes an epic by its public ID. |
48
- | list_epic_comments | Retrieves a list of comments for a specified epic. |
49
- | create_epic_comment | Creates a comment on an epic with the specified details. |
50
- | get_epic_comment | Retrieves a specific comment from an epic by their respective public IDs. |
51
- | update_epic_comment | Updates the text of an existing comment on a specified epic. |
52
- | create_epic_comment_comment | Creates a reply to an existing comment on a specified epic, sending the reply to the backend API and returning the created comment data. |
53
- | delete_epic_comment | Deletes a specific comment from an epic using its public identifiers. |
54
- | list_epic_stories | Retrieves a list of stories associated with a specific epic. |
55
- | unlink_productboard_from_epic | Unlinks a ProductBoard integration from an epic in the system. |
56
- | get_external_link_stories | Retrieves stories associated with an external link. |
57
- | list_files | Retrieves a list of files from the remote API endpoint. |
58
- | get_file | Retrieves a file based on its public ID, returning a dictionary containing file information. |
59
- | update_file | Updates metadata for a file identified by its public ID. |
60
- | delete_file | Deletes a file identified by a public ID from the server. |
61
- | list_groups | Retrieves a list of all groups from the API. |
62
- | create_group | Creates a new group with the specified configuration and returns the group's details. |
63
- | get_group | Retrieves information about a specific group using its public ID. |
64
- | update_group | Updates the properties of an existing group by its public ID. |
65
- | list_group_stories | Retrieves a list of stories from a specific group. |
66
- | list_iterations | Lists all available iterations from the API. |
67
- | create_iteration | Creates a new iteration with the specified details and returns the server's response as a dictionary. |
68
- | disable_iterations | Disables iterations by making a PUT request to the iterations API endpoint. |
69
- | enable_iterations | Enable iterations for the API service. |
70
- | get_iteration | Retrieves iteration details using the specified public ID. |
71
- | update_iteration | Updates an existing iteration with the provided attributes. |
72
- | delete_iteration | Deletes a specific iteration identified by its public ID. |
73
- | list_iteration_stories | Retrieves a list of stories for a specified iteration, optionally including their descriptions. |
74
- | get_key_result | Retrieves detailed information for a specific key result using its public identifier. |
75
- | update_key_result | Updates a key result with the provided details. |
76
- | list_labels | Fetches a list of labels from the API. |
77
- | create_label | Creates a new label with the specified attributes. |
78
- | get_label | Retrieves a label's details from the API using its public identifier. |
79
- | update_label | Updates a label with the specified information. |
80
- | delete_label | Deletes a label identified by its public ID via an HTTP DELETE request. |
81
- | list_label_epics | Retrieves a list of epics associated with a specific label. |
82
- | list_label_stories | Retrieves a list of stories associated with a specific label. |
83
- | list_linked_files | Retrieve a list of all linked files. |
84
- | create_linked_file | Creates a linked file with the specified attributes. |
85
- | get_linked_file | Fetches details for a linked file by its public identifier. |
86
- | update_linked_file | Updates a linked file with the specified parameters. |
87
- | delete_linked_file | Deletes a linked file by its public ID using the API. |
88
- | get_current_member_info | Retrieves information about the current authenticated member. |
89
- | list_milestones | Lists milestones by fetching them from a specified API endpoint. |
90
- | create_milestone | Creates a new milestone with the specified parameters. |
91
- | get_milestone | Retrieves a milestone resource by its public identifier. |
92
- | update_milestone | Updates the properties of an existing milestone with the given parameters. |
93
- | delete_milestone | Deletes a milestone by its public ID. |
94
- | list_milestone_epics | Retrieves a list of epics associated with a specified milestone. |
95
- | list_objectives | Retrieves a list of all objectives from the API endpoint. |
96
- | create_objective | Creates a new objective resource with the specified attributes and returns the created objective's data. |
97
- | get_objective | Retrieves an objective by its public ID from the API. |
98
- | update_objective | Updates an objective by its public ID with new values for fields such as description, archived status, completion and start timestamps, name, state, categories, and relative ordering. |
99
- | delete_objective | Deletes an objective by its public ID using an HTTP DELETE request. |
100
- | list_objective_epics | Retrieves a list of epics associated with a specific objective. |
101
- | list_projects | Retrieves and lists all available projects from the API. |
102
- | create_project | Creates a new project with the specified parameters. |
103
- | get_project | Retrieves project information by its public ID. |
104
- | update_project | Updates a project with the provided parameters. |
105
- | delete_project | Deletes a project using its public ID. |
106
- | list_stories | Retrieves a list of stories for a specific project, with optional inclusion of story descriptions. |
107
- | list_repositories | Lists all repositories from the API. |
108
- | get_repository | Retrieves detailed information about a repository by its public ID. |
109
- | search | Performs a search operation based on the provided query string and optional parameters like page size and entity types. |
110
- | search_epics | Searches for epics based on the provided query parameters. |
111
- | search_iterations | Searches for iterations based on a query and additional parameters. |
112
- | search_milestones | Searches for milestones matching the provided query and returns the results as a dictionary. |
113
- | search_objectives | Searches for objectives based on the specified query and returns the search results. |
114
- | search_stories | Searches for stories matching the given query and optional filters, returning paginated results from the stories API. |
115
- | create_story | Creates a new story with the specified attributes and returns the created story's data. |
116
- | update_multiple_stories | Updates multiple stories in bulk with various fields and configuration changes. |
117
- | create_multiple_stories | Creates multiple stories in bulk using the API. |
118
- | create_story_from_template | Creates a new story from an existing story template. |
119
- | search_stories_old | Searches for stories based on various filter criteria. |
120
- | get_story | Retrieves a story from the API based on its public ID |
121
- | update_story | Updates a story in the project management system with the specified attributes. |
122
- | delete_story | Deletes a story using its public ID. |
123
- | list_story_comment | Retrieves a list of comments for a specific story. |
124
- | create_story_comment | Creates a new comment on a story by sending a POST request with the comment details to the specified API endpoint. |
125
- | get_story_comment | Retrieves a specific comment from a story using the API. |
126
- | update_story_comment | Updates a story comment with new text based on the provided story and comment public IDs. |
127
- | delete_story_comment | Deletes a specific comment from a story using the provided story and comment public IDs. |
128
- | create_story_reaction | Creates a reaction with an emoji to a comment on a story. |
129
- | unlink_comment_thread_from_slack | Unlinks a comment thread from Slack for a specific story. |
130
- | story_history | Retrieves the full change history for a specified story by its public ID. |
131
- | create_task | Creates a task within a specified story. |
132
- | get_task | Gets task details for a specific task within a story. |
133
- | update_task | Updates the specified task within a story, modifying fields such as description, owners, completion status, and position. |
134
- | delete_task | Deletes a task associated with a story based on their respective public IDs. |
135
- | create_story_link | Creates a story link between a subject and an object with the specified verb by sending a POST request to the story-links API endpoint. |
136
- | get_story_link | Retrieves a specific story link by its public ID. |
137
- | update_story_link | Updates an existing story link with new attributes. |
138
- | delete_story_link | Deletes a story link by its public ID. |
139
- | list_workflows | Retrieves a list of available workflows from the API. |
140
- | get_workflow | Retrieves detailed information about a workflow given its public ID. |
141
-
142
-
143
-
144
- ## Usage
145
-
146
- - Login to AgentR
147
- - Follow the quickstart guide to setup MCP Server for your client
148
- - Visit Apps Store and enable the Shortcut app
149
- - Restart the MCP Server
150
-
151
- ### Local Development
152
-
153
- - Follow the README to test with the local MCP Server
File without changes