universal-mcp-applications 0.1.18__py3-none-any.whl → 0.1.20__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of universal-mcp-applications might be problematic. Click here for more details.

Files changed (79) hide show
  1. universal_mcp/applications/ahrefs/README.md +3 -3
  2. universal_mcp/applications/airtable/README.md +3 -3
  3. universal_mcp/applications/asana/README.md +3 -3
  4. universal_mcp/applications/aws_s3/README.md +29 -0
  5. universal_mcp/applications/bill/README.md +249 -0
  6. universal_mcp/applications/calendly/README.md +45 -45
  7. universal_mcp/applications/canva/README.md +35 -35
  8. universal_mcp/applications/clickup/README.md +4 -4
  9. universal_mcp/applications/contentful/README.md +1 -2
  10. universal_mcp/applications/crustdata/README.md +3 -3
  11. universal_mcp/applications/domain_checker/README.md +2 -2
  12. universal_mcp/applications/e2b/README.md +4 -4
  13. universal_mcp/applications/elevenlabs/README.md +3 -77
  14. universal_mcp/applications/exa/README.md +7 -7
  15. universal_mcp/applications/falai/README.md +13 -12
  16. universal_mcp/applications/figma/README.md +3 -3
  17. universal_mcp/applications/file_system/README.md +13 -0
  18. universal_mcp/applications/firecrawl/README.md +9 -9
  19. universal_mcp/applications/fireflies/README.md +14 -14
  20. universal_mcp/applications/fireflies/app.py +109 -1
  21. universal_mcp/applications/fpl/README.md +12 -12
  22. universal_mcp/applications/fpl/app.py +5 -5
  23. universal_mcp/applications/github/README.md +10 -10
  24. universal_mcp/applications/google_calendar/README.md +10 -10
  25. universal_mcp/applications/google_docs/README.md +14 -14
  26. universal_mcp/applications/google_drive/README.md +54 -57
  27. universal_mcp/applications/google_drive/app.py +22 -10
  28. universal_mcp/applications/google_gemini/README.md +3 -14
  29. universal_mcp/applications/google_mail/README.md +20 -20
  30. universal_mcp/applications/google_searchconsole/README.md +10 -10
  31. universal_mcp/applications/google_sheet/README.md +25 -25
  32. universal_mcp/applications/google_sheet/app.py +131 -131
  33. universal_mcp/applications/http_tools/README.md +5 -5
  34. universal_mcp/applications/hubspot/__init__.py +1 -1
  35. universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
  36. universal_mcp/applications/hubspot/api_segments/api_segment_base.py +25 -0
  37. universal_mcp/applications/hubspot/api_segments/crm_api.py +7337 -0
  38. universal_mcp/applications/hubspot/api_segments/marketing_api.py +1467 -0
  39. universal_mcp/applications/hubspot/app.py +74 -146
  40. universal_mcp/applications/klaviyo/README.md +0 -36
  41. universal_mcp/applications/linkedin/README.md +4 -4
  42. universal_mcp/applications/mailchimp/README.md +3 -3
  43. universal_mcp/applications/ms_teams/README.md +31 -31
  44. universal_mcp/applications/neon/README.md +3 -3
  45. universal_mcp/applications/openai/README.md +18 -17
  46. universal_mcp/applications/outlook/README.md +9 -9
  47. universal_mcp/applications/perplexity/README.md +4 -4
  48. universal_mcp/applications/posthog/README.md +128 -127
  49. universal_mcp/applications/reddit/README.md +21 -124
  50. universal_mcp/applications/resend/README.md +29 -29
  51. universal_mcp/applications/scraper/README.md +4 -4
  52. universal_mcp/applications/semrush/README.md +3 -0
  53. universal_mcp/applications/serpapi/README.md +3 -3
  54. universal_mcp/applications/sharepoint/README.md +17 -0
  55. universal_mcp/applications/shortcut/README.md +3 -3
  56. universal_mcp/applications/slack/README.md +23 -0
  57. universal_mcp/applications/spotify/README.md +3 -3
  58. universal_mcp/applications/supabase/README.md +3 -3
  59. universal_mcp/applications/tavily/README.md +4 -4
  60. universal_mcp/applications/twilio/README.md +15 -0
  61. universal_mcp/applications/twitter/README.md +92 -89
  62. universal_mcp/applications/twitter/app.py +11 -11
  63. universal_mcp/applications/unipile/README.md +17 -17
  64. universal_mcp/applications/whatsapp/README.md +12 -12
  65. universal_mcp/applications/whatsapp/app.py +13 -13
  66. universal_mcp/applications/whatsapp_business/README.md +23 -23
  67. universal_mcp/applications/yahoo_finance/README.md +17 -0
  68. universal_mcp/applications/yahoo_finance/__init__.py +1 -0
  69. universal_mcp/applications/yahoo_finance/app.py +258 -0
  70. universal_mcp/applications/youtube/README.md +46 -46
  71. universal_mcp/applications/youtube/app.py +7 -1
  72. universal_mcp/applications/zenquotes/README.md +1 -1
  73. {universal_mcp_applications-0.1.18.dist-info → universal_mcp_applications-0.1.20.dist-info}/METADATA +3 -89
  74. {universal_mcp_applications-0.1.18.dist-info → universal_mcp_applications-0.1.20.dist-info}/RECORD +76 -71
  75. universal_mcp/applications/replicate/README.md +0 -18
  76. universal_mcp/applications/replicate/__init__.py +0 -1
  77. universal_mcp/applications/replicate/app.py +0 -493
  78. {universal_mcp_applications-0.1.18.dist-info → universal_mcp_applications-0.1.20.dist-info}/WHEEL +0 -0
  79. {universal_mcp_applications-0.1.18.dist-info → universal_mcp_applications-0.1.20.dist-info}/licenses/LICENSE +0 -0
@@ -1,38 +1,23 @@
1
- from datetime import UTC, datetime
2
- from typing import Any
3
-
4
1
  from universal_mcp.applications.application import APIApplication
5
2
  from universal_mcp.integrations import Integration
6
-
7
-
8
- class CrmApi:
9
- def __init__(self, api_client):
10
- pass
11
-
12
- def list_tools(self):
13
- return []
14
-
15
-
16
- class MarketingApi:
17
- def __init__(self, api_client):
18
- pass
19
-
20
- def list_tools(self):
21
- return []
22
-
3
+ from universal_mcp.applications.hubspot.api_segments.crm_api import CrmApi
4
+ from universal_mcp.applications.hubspot.api_segments.marketing_api import MarketingApi
5
+ from typing import List, Optional, Any
6
+ from datetime import datetime, timezone
23
7
 
24
8
  class HubspotApp(APIApplication):
25
- def __init__(self, integration: Integration = None, **kwargs) -> None:
26
- super().__init__(name="hubspot", integration=integration, **kwargs)
27
- self.base_url = "https://api.hubapi.com"
9
+
10
+ def __init__(self, integration: Integration=None, **kwargs) -> None:
11
+ super().__init__(name='hubspot', integration=integration, **kwargs)
12
+ self.base_url = 'https://api.hubapi.com'
28
13
  self.crm = CrmApi(self)
29
14
  self.marketing = MarketingApi(self)
30
-
15
+
31
16
  def add_a_note(
32
17
  self,
33
18
  hs_note_body: str,
34
- hs_timestamp: str | None = None,
35
- associations: list[dict[str, Any]] | None = None,
19
+ hs_timestamp: Optional[str] = None,
20
+ associations: Optional[List[dict[str, Any]]] = None,
36
21
  ) -> dict[str, Any]:
37
22
  """
38
23
  Create a note in HubSpot with the given properties and associations.
@@ -53,30 +38,28 @@ class HubspotApp(APIApplication):
53
38
  """
54
39
  if hs_note_body is None:
55
40
  raise ValueError("Missing required parameter 'hs_note_body'.")
56
-
41
+
57
42
  url = f"{self.base_url}/crm/v3/objects/notes"
58
-
43
+
59
44
  # Build the properties object
60
45
  properties = {
61
46
  "hs_note_body": hs_note_body,
62
- "hs_timestamp": hs_timestamp
63
- if hs_timestamp
64
- else datetime.now(UTC).isoformat(),
47
+ "hs_timestamp": hs_timestamp if hs_timestamp else datetime.now(timezone.utc).isoformat()
65
48
  }
66
-
49
+
67
50
  # Build the request body
68
- request_body_data: dict[str, Any] = {"properties": properties}
69
-
51
+ request_body_data: dict[str, Any] = {
52
+ "properties": properties
53
+ }
54
+
70
55
  # Add associations if provided
71
56
  if associations:
72
57
  request_body_data["associations"] = associations
73
-
58
+
74
59
  response = self._post(url, data=request_body_data)
75
60
  return self._handle_response(response)
76
61
 
77
- def fetch_multiple_lists(
78
- self, listIds: list[str] | None = None, includeFilters: bool | None = None
79
- ) -> dict[str, Any]:
62
+ def fetch_multiple_lists(self, listIds: Optional[List[str]] = None, includeFilters: Optional[bool] = None) -> dict[str, Any]:
80
63
  """
81
64
  Fetch multiple lists in a single request by ILS list ID. The response will include the definitions of all lists that exist for the listIds provided.
82
65
 
@@ -94,20 +77,16 @@ class HubspotApp(APIApplication):
94
77
  Lists
95
78
  """
96
79
  url = f"{self.base_url}/crm/v3/lists/"
97
- query_params = {
98
- k: v
99
- for k, v in [("listIds", listIds), ("includeFilters", includeFilters)]
100
- if v is not None
101
- }
80
+ query_params = {k: v for k, v in [('listIds', listIds), ('includeFilters', includeFilters)] if v is not None}
102
81
  response = self._get(url, params=query_params)
103
- return self._handle_response(response)
82
+ return self._handle_response(response)
104
83
 
105
84
  def fetch_list_memberships(
106
85
  self,
107
86
  listId: str,
108
- after: str | None = None,
109
- before: str | None = None,
110
- limit: int | None = None,
87
+ after: Optional[str] = None,
88
+ before: Optional[str] = None,
89
+ limit: Optional[int] = None,
111
90
  ) -> dict[str, Any]:
112
91
  """
113
92
  Fetch the memberships of a list in order sorted by the recordId of the records in the list.
@@ -129,34 +108,24 @@ class HubspotApp(APIApplication):
129
108
  """
130
109
  if listId is None:
131
110
  raise ValueError("Missing required parameter 'listId'.")
132
-
111
+
133
112
  url = f"{self.base_url}/crm/v3/lists/{listId}/memberships"
134
113
  query_params = {}
135
-
114
+
136
115
  if after is not None:
137
116
  query_params["after"] = after
138
117
  if before is not None:
139
118
  query_params["before"] = before
140
119
  if limit is not None:
141
120
  query_params["limit"] = limit
142
-
121
+
143
122
  response = self._get(url, params=query_params)
144
123
  return self._handle_response(response)
145
124
 
146
- def create_list(
147
- self,
148
- objectTypeId: str,
149
- processingType: str,
150
- name: str,
151
- membershipSettings: dict[str, Any] | None = None,
152
- customProperties: dict[str, str] | None = None,
153
- listFolderId: int | None = None,
154
- listPermissions: dict[str, Any] | None = None,
155
- filterBranch: Any | None = None,
156
- ) -> dict[str, Any]:
125
+ def create_list(self, objectTypeId: str, processingType: str, name: str, membershipSettings: Optional[dict[str, Any]] = None, customProperties: Optional[dict[str, str]] = None, listFolderId: Optional[int] = None, listPermissions: Optional[dict[str, Any]] = None, filterBranch: Optional[Any] = None) -> dict[str, Any]:
157
126
  """
158
- Create a new list in HubSpot with the specified object type, processing type, and name.
159
- Optionally use this to provide membership settings, custom properties, a folder ID, list permissions,
127
+ Create a new list in HubSpot with the specified object type, processing type, and name.
128
+ Optionally use this to provide membership settings, custom properties, a folder ID, list permissions,
160
129
  and a filter branch to further configure the list.
161
130
 
162
131
  Args:
@@ -180,31 +149,22 @@ class HubspotApp(APIApplication):
180
149
  """
181
150
  request_body_data = None
182
151
  request_body_data = {
183
- "membershipSettings": membershipSettings,
184
- "objectTypeId": objectTypeId,
185
- "processingType": processingType,
186
- "customProperties": customProperties,
187
- "listFolderId": listFolderId,
188
- "name": name,
189
- "listPermissions": listPermissions,
190
- "filterBranch": filterBranch,
191
- }
192
- request_body_data = {
193
- k: v for k, v in request_body_data.items() if v is not None
152
+ 'membershipSettings': membershipSettings,
153
+ 'objectTypeId': objectTypeId,
154
+ 'processingType': processingType,
155
+ 'customProperties': customProperties,
156
+ 'listFolderId': listFolderId,
157
+ 'name': name,
158
+ 'listPermissions': listPermissions,
159
+ 'filterBranch': filterBranch,
194
160
  }
161
+ request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
195
162
  url = f"{self.base_url}/crm/v3/lists/"
196
163
  query_params = {}
197
- response = self._post(
198
- url,
199
- data=request_body_data,
200
- params=query_params,
201
- content_type="application/json",
202
- )
164
+ response = self._post(url, data=request_body_data, params=query_params, content_type='application/json')
203
165
  return self._handle_response(response)
204
166
 
205
- def get_list_by_id(
206
- self, listId: str, includeFilters: bool | None = None
207
- ) -> dict[str, Any]:
167
+ def get_list_by_id(self, listId: str, includeFilters: Optional[bool] = None) -> dict[str, Any]:
208
168
  """
209
169
  Fetch a single list by ILS list ID.
210
170
 
@@ -224,9 +184,7 @@ class HubspotApp(APIApplication):
224
184
  if listId is None:
225
185
  raise ValueError("Missing required parameter 'listId'.")
226
186
  url = f"{self.base_url}/crm/v3/lists/{listId}"
227
- query_params = {
228
- k: v for k, v in [("includeFilters", includeFilters)] if v is not None
229
- }
187
+ query_params = {k: v for k, v in [('includeFilters', includeFilters)] if v is not None}
230
188
  response = self._get(url, params=query_params)
231
189
  return self._handle_response(response)
232
190
 
@@ -252,8 +210,8 @@ class HubspotApp(APIApplication):
252
210
  query_params = {}
253
211
  response = self._delete(url, params=query_params)
254
212
  return self._handle_response(response)
255
-
256
- def add_records_to_list(self, listId: str, items: list[str]) -> dict[str, Any]:
213
+
214
+ def add_records_to_list(self, listId: str, items: List[str]) -> dict[str, Any]:
257
215
  """
258
216
  Add the records provided to the list. Records that do not exist or that are already members of the list are ignored.
259
217
  This only works for lists that have a processingType of MANUAL or SNAPSHOT.
@@ -278,15 +236,10 @@ class HubspotApp(APIApplication):
278
236
  request_body_data = items
279
237
  url = f"{self.base_url}/crm/v3/lists/{listId}/memberships/add"
280
238
  query_params = {}
281
- response = self._put(
282
- url,
283
- data=request_body_data,
284
- params=query_params,
285
- content_type="application/json",
286
- )
287
- return self._handle_response(response)
239
+ response = self._put(url, data=request_body_data, params=query_params, content_type='application/json')
240
+ return self._handle_response(response)
288
241
 
289
- def remove_records_from_list(self, listId: str, items: list[str]) -> dict[str, Any]:
242
+ def remove_records_from_list(self, listId: str, items: List[str]) -> dict[str, Any]:
290
243
  """
291
244
  Remove the records provided from the list. Records that are not members of the list are ignored.
292
245
  This only works for lists that have a processingType of MANUAL or SNAPSHOT.
@@ -311,24 +264,10 @@ class HubspotApp(APIApplication):
311
264
  request_body_data = items
312
265
  url = f"{self.base_url}/crm/v3/lists/{listId}/memberships/remove"
313
266
  query_params = {}
314
- response = self._put(
315
- url,
316
- data=request_body_data,
317
- params=query_params,
318
- content_type="application/json",
319
- )
267
+ response = self._put(url, data=request_body_data, params=query_params, content_type='application/json')
320
268
  return self._handle_response(response)
321
269
 
322
- def search_lists(
323
- self,
324
- listIds: list[str] | None = None,
325
- offset: int | None = None,
326
- query: str | None = None,
327
- count: int | None = None,
328
- processingTypes: list[str] | None = None,
329
- additionalProperties: list[str] | None = None,
330
- sort: str | None = None,
331
- ) -> dict[str, Any]:
270
+ def search_lists(self, listIds: Optional[List[str]] = None, offset: Optional[int] = None, query: Optional[str] = None, count: Optional[int] = None, processingTypes: Optional[List[str]] = None, additionalProperties: Optional[List[str]] = None, sort: Optional[str] = None) -> dict[str, Any]:
332
271
  """
333
272
  Search lists by list name or page through all lists by providing an empty query value.
334
273
 
@@ -360,30 +299,21 @@ class HubspotApp(APIApplication):
360
299
  """
361
300
  request_body_data = None
362
301
  request_body_data = {
363
- "listIds": listIds,
364
- "offset": offset,
365
- "query": query,
366
- "count": count,
367
- "processingTypes": processingTypes,
368
- "additionalProperties": additionalProperties,
369
- "sort": sort,
370
- }
371
- request_body_data = {
372
- k: v for k, v in request_body_data.items() if v is not None
302
+ 'listIds': listIds,
303
+ 'offset': offset,
304
+ 'query': query,
305
+ 'count': count,
306
+ 'processingTypes': processingTypes,
307
+ 'additionalProperties': additionalProperties,
308
+ 'sort': sort,
373
309
  }
310
+ request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
374
311
  url = f"{self.base_url}/crm/v3/lists/search"
375
312
  query_params = {}
376
- response = self._post(
377
- url,
378
- data=request_body_data,
379
- params=query_params,
380
- content_type="application/json",
381
- )
313
+ response = self._post(url, data=request_body_data, params=query_params, content_type='application/json')
382
314
  return self._handle_response(response)
383
315
 
384
- def fetch_list_by_name(
385
- self, objectTypeId: str, listName: str, includeFilters: bool | None = None
386
- ) -> dict[str, Any]:
316
+ def fetch_list_by_name(self, objectTypeId: str, listName: str, includeFilters: Optional[bool] = None) -> dict[str, Any]:
387
317
  """
388
318
  Fetch a list by its name and object type ID.
389
319
 
@@ -406,25 +336,23 @@ class HubspotApp(APIApplication):
406
336
  if listName is None:
407
337
  raise ValueError("Missing required parameter 'listName'.")
408
338
  url = f"{self.base_url}/crm/v3/lists/object-type-id/{objectTypeId}/name/{listName}"
409
- query_params = {
410
- k: v for k, v in [("includeFilters", includeFilters)] if v is not None
411
- }
339
+ query_params = {k: v for k, v in [('includeFilters', includeFilters)] if v is not None}
412
340
  response = self._get(url, params=query_params)
413
341
  return self._handle_response(response)
414
342
 
343
+
415
344
  def list_tools(self):
416
345
  all_tools = [
417
- self.add_a_note,
418
- self.fetch_multiple_lists,
419
- self.fetch_list_memberships,
420
- self.create_list,
421
- self.get_list_by_id,
422
- self.delete_list_by_id,
423
- self.add_records_to_list,
424
- self.remove_records_from_list,
425
- self.search_lists,
426
- self.fetch_list_by_name,
427
- ]
346
+ self.add_a_note,
347
+ self.fetch_multiple_lists,
348
+ self.fetch_list_memberships,
349
+ self.create_list,
350
+ self.get_list_by_id,
351
+ self.delete_list_by_id,
352
+ self.add_records_to_list,
353
+ self.remove_records_from_list,
354
+ self.search_lists,
355
+ self.fetch_list_by_name]
428
356
  all_tools.extend(self.crm.list_tools())
429
357
  all_tools.extend(self.marketing.list_tools())
430
- return all_tools
358
+ return all_tools
@@ -275,39 +275,3 @@ This is automatically generated from OpenAPI schema for the KlaviyoApp API.
275
275
  | `update_webhook` | Updates the webhook resource identified by {id} using partial modifications, requiring a revision header and returning appropriate status codes for success (200), client errors (400), or server errors (500). |
276
276
  | `get_webhook_topics` | Retrieves webhook topics with an optional revision header parameter, returning 200, 400, or 500 status codes. |
277
277
  | `get_webhook_topic` | Retrieves a webhook topic by its ID using the GET method, supporting revision information via a header parameter, and returns responses for successful retrieval (200), bad requests (400), and internal server errors (500). |
278
-
279
-
280
- ## 📁 Project Structure
281
-
282
- The generated project has a standard layout:
283
- ```
284
- .
285
- ├── src/ # Source code directory
286
- │ └── universal_mcp_klaviyoapp/
287
- │ ├── __init__.py
288
- │ └── mcp.py # Server is launched here
289
- │ └── app.py # Application tools are defined here
290
- ├── tests/ # Directory for project tests
291
- ├── .env # Environment variables (for local development)
292
- ├── pyproject.toml # Project dependencies managed by uv
293
- ├── README.md # This file
294
- ```
295
-
296
- ## 📝 License
297
-
298
- This project is licensed under the MIT License.
299
-
300
- ---
301
-
302
- _This project was generated using **MCP CLI** — Happy coding! 🚀_
303
-
304
- ## Usage
305
-
306
- - Login to AgentR
307
- - Follow the quickstart guide to setup MCP Server for your client
308
- - Visit Apps Store and enable the KlaviyoApp app
309
- - Restart the MCP Server
310
-
311
- ### Local Development
312
-
313
- - Follow the README to test with the local MCP Server
@@ -9,7 +9,7 @@ This is automatically generated from OpenAPI schema for the LinkedinApp API.
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `create_post` | Create a post on LinkedIn. |
13
- | `get_your_info` | Get your LinkedIn profile information. |
14
- | `delete_post` | Delete a post on LinkedIn. |
15
- | `update_post` | Update a post on LinkedIn. |
12
+ | `create_post` | Publishes a new text post to a specified LinkedIn author's feed (person or organization). It allows configuring visibility, distribution, and lifecycle state. Upon success, it returns the unique URN and URL for the new post, distinguishing this creation operation from the update or delete functions. |
13
+ | `get_authenticated_user_profile` | Retrieves the authenticated user's profile from the LinkedIn `/v2/userinfo` endpoint. Using credentials from the active integration, it returns a dictionary with basic user details like name and email. This function is for fetching user data, distinct from others that create, update, or delete posts. |
14
+ | `delete_post` | Deletes a LinkedIn post identified by its unique Uniform Resource Name (URN). This function sends a DELETE request to the API, permanently removing the content. Upon a successful HTTP 204 response, it returns a dictionary confirming the post's deletion status. |
15
+ | `update_post` | Modifies an existing LinkedIn post, identified by its URN, by performing a partial update. It selectively changes attributes like commentary or ad context, distinguishing it from `create_post` which creates new content. Returns a confirmation dictionary upon successful completion. |
@@ -1,10 +1,10 @@
1
- # Mailchimp MCP Server
1
+ # MailchimpApp MCP Server
2
2
 
3
- An MCP Server for the Mailchimp API.
3
+ An MCP Server for the MailchimpApp API.
4
4
 
5
5
  ## 🛠️ Tool List
6
6
 
7
- This is automatically generated from OpenAPI schema for the Mailchimp API.
7
+ This is automatically generated from OpenAPI schema for the MailchimpApp API.
8
8
 
9
9
 
10
10
  | Tool | Description |
@@ -9,34 +9,34 @@ This is automatically generated from OpenAPI schema for the MsTeamsApp API.
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `list_chats` | List chats |
13
- | `get_joined_teams` | Fetches a list of the Microsoft Teams the user has joined. |
14
- | `list_channels_for_team` | List channels |
15
- | `send_chat_message` | Sends a message to a specific chat. |
16
- | `send_channel_message` | Sends a message to a specific channel in a Microsoft Teams team. |
17
- | `reply_to_channel_message` | Sends a reply to a specific message in a channel. |
18
- | `create_chat_operation` | Create chat |
19
- | `get_chat` | Get chat |
20
- | `update_chat_details` | Update chat |
21
- | `list_chat_apps` | List apps in chat |
22
- | `list_chat_members` | List conversationMembers |
23
- | `add_member_to_chat` | Add member to a chat |
24
- | `get_chat_member_details` | Get conversationMember |
25
- | `delete_chat_member` | Remove member from chat |
26
- | `list_chat_messages` | List messages in a chat |
27
- | `get_chat_message_detail` | Get chatMessage in a channel or chat |
28
- | `read_chat_replies` | Get replies from chats |
29
- | `create_chat_reply` | Create new navigation property to replies for chats |
30
- | `get_chat_replies` | Get replies from chats |
31
- | `create_team_from_group` | Create team from group |
32
- | `create_team` | Create team |
33
- | `get_team_channel_info` | Get channel |
34
- | `update_chat_message_by_team_channel` | Update chatMessage |
35
- | `update_message_reply` | Update the navigation property replies in teams |
36
- | `get_channel_tabs` | List tabs in channel |
37
- | `add_channel_tab` | Add tab to channel |
38
- | `get_team_tab_info` | Get tab |
39
- | `update_tab_info` | Update tab |
40
- | `delete_channel_tab_by_id` | Delete tab from channel |
41
- | `get_primary_team_channel` | Get primaryChannel |
42
- | `get_user_installed_apps` | List apps installed for user |
12
+ | `get_user_chats` | Retrieves a collection of chats the authenticated user is participating in. Supports optional OData query parameters for advanced filtering, sorting, pagination, and field selection, enabling customized data retrieval from the Microsoft Graph API. |
13
+ | `get_joined_teams` | Fetches all Microsoft Teams the authenticated user belongs to by querying the `/me/joinedTeams` Graph API endpoint. It returns a list of dictionaries, where each dictionary represents a single team's details, unlike functions that list channels or chats for a specific team. |
14
+ | `list_channels_for_team` | Retrieves the collection of channels for a specified Microsoft Teams team by its ID. It supports advanced OData query parameters for filtering, sorting, and pagination, distinguishing it from functions that fetch single channels like `get_channel_details`. |
15
+ | `send_chat_message` | Posts a new message to a specific Microsoft Teams chat using its unique ID. This function targets direct or group chats, distinguishing it from `send_channel_message`, which posts to public team channels, and `reply_to_chat_message`, which responds to existing messages. |
16
+ | `send_channel_message` | Posts a new message to a specified team channel, initiating a new conversation thread. Unlike `reply_to_channel_message`, which replies to a message, this function starts a new topic. It's distinct from `send_chat_message`, which is for private or group chats, not team channels. |
17
+ | `reply_to_channel_message` | Posts a reply to a specific message within a Microsoft Teams channel. It uses the team, channel, and original message IDs to target an existing conversation thread, distinguishing it from `send_channel_message` which starts a new one. |
18
+ | `create_chat` | Creates a new one-on-one or group chat in Microsoft Teams. This function provisions a new conversation using optional parameters like chatType and members, distinguishing it from functions that create teams (`create_team`) or send messages to existing chats (`send_chat_message`). |
19
+ | `get_chat_details` | Retrieves the properties and relationships of a specific chat conversation by its unique ID. Unlike `get_user_chats` which lists all chats, this targets one chat. Optional parameters can select specific fields or expand related entities like members or apps to customize the returned data. |
20
+ | `update_chat_details` | Updates properties of a specific chat, such as its topic, using its unique ID. This function performs a partial update (PATCH), distinguishing it from `get_chat_details` which only retrieves data, and `create_chat` which creates an entirely new chat conversation. |
21
+ | `list_installed_chat_apps` | Retrieves applications installed in a specific chat, identified by `chat_id`. Differentiating from `list_user_installed_apps`, which targets a user's personal scope, this function queries a single conversation. It supports optional parameters for advanced filtering, sorting, and pagination to customize the returned collection. |
22
+ | `list_chat_members` | Retrieves a collection of all members in a specific chat using its ID. It supports OData query parameters for pagination, filtering, and sorting. Unlike `get_chat_member`, which fetches a single individual, this function returns the entire collection of members for the specified chat. |
23
+ | `add_member_to_chat` | Adds a new member to a specific Microsoft Teams chat using its `chat_id`. This function allows for configuring member roles and chat history visibility. It is the direct counterpart to `delete_chat_member`, performing the 'create' action for a chat's membership. |
24
+ | `get_chat_member` | Retrieves detailed information for a specific member within a chat using their unique ID. This function targets a single individual, distinguishing it from `list_chat_members` which returns all members. The response can be customized by selecting specific properties or expanding related entities. |
25
+ | `delete_chat_member` | Removes a specific member from a chat using their unique ID and the chat's ID. This function sends a DELETE request to the Microsoft Graph API to permanently remove the user from the conversation, acting as the counterpart to `add_member_to_chat`. |
26
+ | `list_chat_messages` | Retrieves messages from a specific chat using its ID. Unlike `get_chat_message`, which fetches a single message, this function returns a collection and supports advanced querying for filtering, sorting, and pagination to refine the results. |
27
+ | `get_chat_message` | Retrieves the full details of a single message from a specific chat using both chat and message IDs. This function targets an individual message, differentiating it from `list_chat_messages`, which retrieves a collection. Optional parameters can customize the response by selecting specific properties or expanding entities. |
28
+ | `list_chat_message_replies` | Retrieves all replies for a specific message within a chat, using the parent message's ID. This function, unlike `get_chat_reply_details`, returns a collection and supports OData query parameters for advanced filtering, sorting, and pagination of the results. |
29
+ | `reply_to_chat_message` | Posts a reply to a specific message within a chat. This comprehensive function allows for detailed configuration of the reply's properties, like its body and attachments. It differs from `reply_to_channel_message`, which sends simpler replies to messages within team channels. |
30
+ | `get_chat_reply_details` | Retrieves a specific reply from a chat message thread using the chat, parent message, and reply IDs. Unlike `list_chat_message_replies`, which fetches all replies, this function targets a single reply for detailed information, allowing for customized field selection. |
31
+ | `create_team_from_group` | Enables Microsoft Teams functionality for a pre-existing Microsoft 365 group using its ID. This 'team-ifies' the group, allowing optional configuration of team properties. It differs from `create_team`, which provisions both a new team and its associated group simultaneously. |
32
+ | `create_team` | Creates a new Microsoft Team and its associated Microsoft 365 group. This method builds a team from scratch, allowing specification of initial properties like display name, description, and members. It differs from `create_team_from_group`, which enables team functionality for an existing group. |
33
+ | `get_channel_details` | Retrieves detailed information for a specific channel within a Microsoft Teams team, identified by both team and channel IDs. Optional parameters can select specific properties or expand related entities in the response, distinguishing it from list_channels_for_team, which retrieves a collection of channels. |
34
+ | `update_channel_message` | Updates an existing message within a Microsoft Teams channel, identified by team, channel, and message IDs. This function modifies the original message's properties, like its body, via a PATCH request, distinguishing it from functions that create new messages or update replies. |
35
+ | `update_channel_message_reply` | Updates an existing reply to a specific message within a Microsoft Teams channel. It identifies the target reply using team, channel, parent message, and reply IDs, modifying its properties (e.g., body content, attachments) via a PATCH request. |
36
+ | `list_channel_tabs` | Retrieves a collection of tabs from a specified channel within a Microsoft Teams team. Unlike `get_channel_tab_details`, which fetches a single tab, this function lists all tabs and supports advanced OData query parameters for filtering, sorting, and pagination of the entire collection. |
37
+ | `create_channel_tab` | Creates a new tab in a specified Microsoft Teams channel using team and channel IDs. This function configures the tab's initial properties, such as display name and application, distinguishing it from functions that list (`list_channel_tabs`) or modify (`update_channel_tab`) existing tabs. |
38
+ | `get_channel_tab_details` | Fetches properties for a single tab within a specific Microsoft Teams channel, identified by its team, channel, and tab IDs. Unlike `list_channel_tabs` which gets all tabs, this targets a specific one, with options to select fields or expand related entities in the response. |
39
+ | `update_channel_tab` | Modifies properties of an existing tab within a specific Microsoft Teams channel. It uses the team, channel, and tab IDs to target the tab, allowing for partial updates to its configuration or display name via a PATCH request, differentiating it from tab creation or deletion functions. |
40
+ | `delete_channel_tab` | Permanently removes a specific tab from a Microsoft Teams channel using its unique ID, along with the parent team and channel IDs. This function is the destructive counterpart to `create_channel_tab`, designed to delete a tab rather than create, list, or update one. |
41
+ | `get_primary_team_channel` | Retrieves the primary channel (usually 'General') for a specified team using its ID. Unlike `get_channel_details`, this function directly accesses the team's default channel without requiring a specific channel ID. Optional parameters can select or expand properties in the returned data. |
42
+ | `list_user_installed_apps` | Retrieves applications installed in a user's personal Microsoft Teams scope, identified by their ID. Unlike `list_installed_chat_apps` which targets chat installations, this focuses on the user's scope. It supports optional OData parameters for filtering, sorting, and pagination to customize the returned app collection. |
@@ -1,10 +1,10 @@
1
- # Neon MCP Server
1
+ # NeonApp MCP Server
2
2
 
3
- An MCP Server for the Neon API.
3
+ An MCP Server for the NeonApp API.
4
4
 
5
5
  ## 🛠️ Tool List
6
6
 
7
- This is automatically generated from OpenAPI schema for the Neon API.
7
+ This is automatically generated from OpenAPI schema for the NeonApp API.
8
8
 
9
9
 
10
10
  | Tool | Description |
@@ -1,22 +1,23 @@
1
- # OpenAI MCP Server
1
+ # OpenaiApp MCP Server
2
2
 
3
- An MCP Server for the OpenAI API.
3
+ An MCP Server for the OpenaiApp API.
4
4
 
5
5
  ## 🛠️ Tool List
6
6
 
7
- This is automatically generated from OpenAPI schema for the OpenAI API.
7
+ This is automatically generated from OpenAPI schema for the OpenaiApp API.
8
8
 
9
- | Tool | Description |
10
- | ------------------------ | ------------------------------------------------------------------------- |
11
- | `create_chat_completion` | Creates a model response for the given chat conversation. |
12
- | `upload_file` | Upload a file that can be used across various OpenAI API endpoints. |
13
- | `list_files` | Lists the files that have been uploaded to your OpenAI account. |
14
- | `retrieve_file` | Retrieves information about a specific file. |
15
- | `delete_file` | Deletes a file. |
16
- | `retrieve_file_content` | Retrieves the content of the specified file. |
17
- | `generate_image` | Creates an image given a prompt. |
18
- | `create_image_edit` | Creates an edited or extended image given an original image and a prompt. |
19
- | `create_image_variation` | Creates a variation of a given image. |
20
- | `create_transcription` | Transcribes audio into the input language. |
21
- | `create_translation` | Translates audio into English text. |
22
- | `create_speech` | Generates audio from the input text. |
9
+
10
+ | Tool | Description |
11
+ |------|-------------|
12
+ | `create_chat_completion` | Generates a model response for a chat conversation. It supports both standard and streaming modes; if streaming, it internally aggregates response chunks into a single complete object, simplifying stream handling. Returns the completion data as a dictionary on success or an error string on failure. |
13
+ | `upload_file` | Uploads a file to the user's OpenAI account for use across various endpoints like 'assistants'. It accepts a file path or object and a purpose string, returning a dictionary with the created file object's details upon success. |
14
+ | `list_files` | Retrieves a paginated list of files uploaded to the OpenAI account. Allows filtering by purpose and controlling the output with limit, `after` cursor, and sort order parameters to efficiently navigate through the file collection. |
15
+ | `retrieve_file_metadata` | Retrieves the metadata (e.g., purpose, creation date) for a specific file from the OpenAI account using its ID. Unlike `retrieve_file_content`, this function does not download the file's contents. It returns a dictionary with file details on success or an error string on failure. |
16
+ | `delete_file` | Permanently deletes a file from the user's OpenAI account using its unique file ID. This action is irreversible. It returns a dictionary confirming the deletion on success or an error message string on failure. This is the 'delete' operation in the file management lifecycle. |
17
+ | `retrieve_file_content` | Retrieves a file's content from OpenAI using its ID. It returns plain text for common text formats (e.g., JSON, CSV). For binary or undecodable files, it returns a dictionary with base64-encoded data, differentiating it from `retrieve_file` which only fetches metadata. |
18
+ | `create_image` | Generates new images from a textual prompt using OpenAI's DALL-E models. It allows customization of parameters like image size, quality, style, and response format (URL or base64 JSON). Unlike other image functions in this class, it creates images entirely from scratch based on text. |
19
+ | `create_image_edit` | Modifies a source image using the DALL-E 2 model based on a text prompt. An optional mask can be supplied to specify the exact area for editing. This function is distinct from generating images from scratch (`generate_image`) or creating simple variations (`create_image_variation`). |
20
+ | `create_image_variation` | Generates one or more variations of a provided image using the OpenAI API, specifically the DALL-E 2 model. It allows customization of the number, size, and response format of the resulting images. Returns a dictionary with image data on success or an error string on failure. |
21
+ | `transcribe_audio` | Transcribes an audio file into text in its original language using models like Whisper or GPT-4o. It supports multiple response formats and internally aggregates streaming data into a final object. This differs from `create_translation`, which translates audio specifically into English text. |
22
+ | `create_translation` | Translates audio from any supported language into English text using OpenAI's API. Unlike `create_transcription`, which converts audio to text in its original language, this function's output is always English. It supports various response formats like JSON, text, or SRT for the translated content. |
23
+ | `create_speech` | Generates audio from input text using a specified TTS model and voice. This text-to-speech function allows customizing audio format and speed. On success, it returns a dictionary containing the base64-encoded audio content and its corresponding MIME type, or an error string on failure. |
@@ -9,12 +9,12 @@ This is automatically generated from OpenAPI schema for the OutlookApp API.
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `users_message_reply` | Replies to a specific message for a user using the POST method, accepting JSON content in the request body and returning status codes indicating success or error. |
13
- | `user_send_mail` | Sends an email on behalf of the specified user, accepting the email details as JSON in the request body and returning a 204 No Content response on success. |
14
- | `user_get_mail_folder` | Retrieves a specific mail folder for a specified user using optional query parameters to include hidden folders or select/expand properties. |
15
- | `user_list_message` | Retrieves a list of messages for a user, allowing optional filtering and sorting of results based on parameters such as includeHiddenMessages, search, filter, top, skip, orderby, select, and expand. |
16
- | `user_get_message` | Retrieves a specific message for a user, optionally including hidden messages, selecting specific fields, or expanding related data. |
17
- | `user_delete_message` | Deletes a specific message for a given user using the DELETE method and optional If-Match header for conditional requests. |
18
- | `user_message_list_attachment` | Retrieves attachments associated with a specified user's message, supporting filtering, pagination, and field selection via query parameters. |
19
- | `get_user_id` | Retrieves the current user. |
20
- | `get_from_url` | Makes a GET request to a full @odata.nextLink or @odata.deltaLink URL. |
12
+ | `reply_to_message` | Replies to an email using its message ID, with either a simple comment or a full message object including attachments. Unlike `send_mail`, which creates a new email, this function targets an existing message. It defaults to the current user if no user ID is specified. |
13
+ | `send_mail` | Sends a new email on behalf of a specified or current user, using a dictionary for content like recipients and subject. Unlike `reply_to_message`, which replies to an existing message, this function composes and sends an entirely new email from scratch. |
14
+ | `get_mail_folder` | Retrieves a specific mail folder's metadata by its ID for a given user. The response can be customized to include hidden folders or select specific properties. Unlike `list_user_messages`, this function fetches folder details, not the emails contained within it. |
15
+ | `list_user_messages` | Retrieves a list of messages from a user's mailbox. This function supports powerful querying using optional parameters for filtering, searching, sorting, and pagination, unlike `get_user_message`, which fetches a single email by its ID. |
16
+ | `get_user_message` | Retrieves a specific email message by its ID for a given user, with options to select specific fields or expand related data. Unlike `list_user_messages`, which fetches a collection of emails with advanced filtering, this function is designed to retrieve a single, known message. |
17
+ | `user_delete_message` | Permanently deletes a specific email, identified by `message_id`, from a user's mailbox. If `user_id` is not provided, it defaults to the current authenticated user. Unlike retrieval functions such as `get_user_message`, this performs a destructive action to remove the specified email from Outlook. |
18
+ | `list_message_attachments` | Retrieves attachments for a specific email message, identified by its ID. Supports advanced querying for filtering, sorting, and pagination, allowing users to select specific fields to return in the result set, focusing only on attachments rather than the full message content. |
19
+ | `get_current_user_profile` | Fetches the `userPrincipalName` for the currently authenticated user from the `/me` endpoint. This internal helper is used by other methods to automatically obtain the user's ID for API calls when a `user_id` is not explicitly provided. |
20
+ | `get_next_page` | Executes a GET request for a full URL, typically the `@odata.nextLink` from a previous paginated API response. It simplifies retrieving subsequent pages of data from list functions by handling URL validation and parsing before fetching the results for the next page. |
@@ -1,12 +1,12 @@
1
- # Perplexity MCP Server
1
+ # PerplexityApp MCP Server
2
2
 
3
- An MCP Server for the Perplexity API.
3
+ An MCP Server for the PerplexityApp API.
4
4
 
5
5
  ## 🛠️ Tool List
6
6
 
7
- This is automatically generated from OpenAPI schema for the Perplexity API.
7
+ This is automatically generated from OpenAPI schema for the PerplexityApp API.
8
8
 
9
9
 
10
10
  | Tool | Description |
11
11
  |------|-------------|
12
- | `chat` | Initiates a chat completion request to generate AI responses using various models with customizable parameters. |
12
+ | `answer_with_search` | Queries the Perplexity Chat Completions API for a web-search-grounded answer. It sends the user's prompt and model parameters to the `/chat/completions` endpoint, then parses the response to return the synthesized content and a list of supporting source citations, ideal for real-time information retrieval. |