universal-mcp 0.1.12__py3-none-any.whl → 0.1.13rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. universal_mcp/applications/__init__.py +51 -7
  2. universal_mcp/cli.py +109 -17
  3. universal_mcp/integrations/__init__.py +1 -1
  4. universal_mcp/integrations/integration.py +79 -0
  5. universal_mcp/servers/README.md +79 -0
  6. universal_mcp/servers/server.py +17 -29
  7. universal_mcp/stores/README.md +74 -0
  8. universal_mcp/stores/store.py +0 -2
  9. universal_mcp/templates/README.md.j2 +93 -0
  10. universal_mcp/templates/api_client.py.j2 +27 -0
  11. universal_mcp/tools/README.md +86 -0
  12. universal_mcp/tools/tools.py +1 -1
  13. universal_mcp/utils/agentr.py +90 -0
  14. universal_mcp/utils/api_generator.py +166 -208
  15. universal_mcp/utils/openapi.py +221 -321
  16. universal_mcp/utils/singleton.py +23 -0
  17. {universal_mcp-0.1.12.dist-info → universal_mcp-0.1.13rc2.dist-info}/METADATA +16 -41
  18. universal_mcp-0.1.13rc2.dist-info/RECORD +38 -0
  19. universal_mcp/applications/ahrefs/README.md +0 -76
  20. universal_mcp/applications/ahrefs/__init__.py +0 -0
  21. universal_mcp/applications/ahrefs/app.py +0 -2291
  22. universal_mcp/applications/cal_com_v2/README.md +0 -175
  23. universal_mcp/applications/cal_com_v2/__init__.py +0 -0
  24. universal_mcp/applications/cal_com_v2/app.py +0 -5390
  25. universal_mcp/applications/calendly/README.md +0 -78
  26. universal_mcp/applications/calendly/__init__.py +0 -0
  27. universal_mcp/applications/calendly/app.py +0 -1195
  28. universal_mcp/applications/clickup/README.md +0 -160
  29. universal_mcp/applications/clickup/__init__.py +0 -0
  30. universal_mcp/applications/clickup/app.py +0 -5009
  31. universal_mcp/applications/coda/README.md +0 -133
  32. universal_mcp/applications/coda/__init__.py +0 -0
  33. universal_mcp/applications/coda/app.py +0 -3671
  34. universal_mcp/applications/e2b/README.md +0 -37
  35. universal_mcp/applications/e2b/app.py +0 -65
  36. universal_mcp/applications/elevenlabs/README.md +0 -84
  37. universal_mcp/applications/elevenlabs/__init__.py +0 -0
  38. universal_mcp/applications/elevenlabs/app.py +0 -1402
  39. universal_mcp/applications/falai/README.md +0 -42
  40. universal_mcp/applications/falai/__init__.py +0 -0
  41. universal_mcp/applications/falai/app.py +0 -332
  42. universal_mcp/applications/figma/README.md +0 -74
  43. universal_mcp/applications/figma/__init__.py +0 -0
  44. universal_mcp/applications/figma/app.py +0 -1261
  45. universal_mcp/applications/firecrawl/README.md +0 -45
  46. universal_mcp/applications/firecrawl/app.py +0 -268
  47. universal_mcp/applications/github/README.md +0 -47
  48. universal_mcp/applications/github/app.py +0 -429
  49. universal_mcp/applications/gong/README.md +0 -88
  50. universal_mcp/applications/gong/__init__.py +0 -0
  51. universal_mcp/applications/gong/app.py +0 -2297
  52. universal_mcp/applications/google_calendar/app.py +0 -442
  53. universal_mcp/applications/google_docs/README.md +0 -40
  54. universal_mcp/applications/google_docs/app.py +0 -88
  55. universal_mcp/applications/google_drive/README.md +0 -44
  56. universal_mcp/applications/google_drive/app.py +0 -286
  57. universal_mcp/applications/google_mail/README.md +0 -47
  58. universal_mcp/applications/google_mail/app.py +0 -664
  59. universal_mcp/applications/google_sheet/README.md +0 -42
  60. universal_mcp/applications/google_sheet/app.py +0 -150
  61. universal_mcp/applications/hashnode/app.py +0 -81
  62. universal_mcp/applications/hashnode/prompt.md +0 -23
  63. universal_mcp/applications/heygen/README.md +0 -69
  64. universal_mcp/applications/heygen/__init__.py +0 -0
  65. universal_mcp/applications/heygen/app.py +0 -956
  66. universal_mcp/applications/mailchimp/README.md +0 -306
  67. universal_mcp/applications/mailchimp/__init__.py +0 -0
  68. universal_mcp/applications/mailchimp/app.py +0 -10937
  69. universal_mcp/applications/markitdown/app.py +0 -44
  70. universal_mcp/applications/notion/README.md +0 -55
  71. universal_mcp/applications/notion/__init__.py +0 -0
  72. universal_mcp/applications/notion/app.py +0 -527
  73. universal_mcp/applications/perplexity/README.md +0 -37
  74. universal_mcp/applications/perplexity/app.py +0 -65
  75. universal_mcp/applications/reddit/README.md +0 -45
  76. universal_mcp/applications/reddit/app.py +0 -379
  77. universal_mcp/applications/replicate/README.md +0 -65
  78. universal_mcp/applications/replicate/__init__.py +0 -0
  79. universal_mcp/applications/replicate/app.py +0 -980
  80. universal_mcp/applications/resend/README.md +0 -38
  81. universal_mcp/applications/resend/app.py +0 -37
  82. universal_mcp/applications/retell_ai/README.md +0 -46
  83. universal_mcp/applications/retell_ai/__init__.py +0 -0
  84. universal_mcp/applications/retell_ai/app.py +0 -333
  85. universal_mcp/applications/rocketlane/README.md +0 -42
  86. universal_mcp/applications/rocketlane/__init__.py +0 -0
  87. universal_mcp/applications/rocketlane/app.py +0 -194
  88. universal_mcp/applications/serpapi/README.md +0 -37
  89. universal_mcp/applications/serpapi/app.py +0 -73
  90. universal_mcp/applications/spotify/README.md +0 -116
  91. universal_mcp/applications/spotify/__init__.py +0 -0
  92. universal_mcp/applications/spotify/app.py +0 -2526
  93. universal_mcp/applications/supabase/README.md +0 -112
  94. universal_mcp/applications/supabase/__init__.py +0 -0
  95. universal_mcp/applications/supabase/app.py +0 -2970
  96. universal_mcp/applications/tavily/README.md +0 -38
  97. universal_mcp/applications/tavily/app.py +0 -51
  98. universal_mcp/applications/wrike/README.md +0 -71
  99. universal_mcp/applications/wrike/__init__.py +0 -0
  100. universal_mcp/applications/wrike/app.py +0 -1372
  101. universal_mcp/applications/youtube/README.md +0 -82
  102. universal_mcp/applications/youtube/__init__.py +0 -0
  103. universal_mcp/applications/youtube/app.py +0 -1428
  104. universal_mcp/applications/zenquotes/README.md +0 -37
  105. universal_mcp/applications/zenquotes/app.py +0 -31
  106. universal_mcp/integrations/agentr.py +0 -112
  107. universal_mcp-0.1.12.dist-info/RECORD +0 -119
  108. {universal_mcp-0.1.12.dist-info → universal_mcp-0.1.13rc2.dist-info}/WHEEL +0 -0
  109. {universal_mcp-0.1.12.dist-info → universal_mcp-0.1.13rc2.dist-info}/entry_points.txt +0 -0
@@ -1,429 +0,0 @@
1
- from typing import Any, ClassVar
2
-
3
- from loguru import logger
4
-
5
- from universal_mcp.applications.application import APIApplication
6
- from universal_mcp.integrations import Integration
7
-
8
-
9
- class GithubApp(APIApplication):
10
- APP_TAGS: ClassVar[list[str]] = ["developers-tools"]
11
-
12
- def __init__(self, integration: Integration) -> None:
13
- super().__init__(name="github", integration=integration)
14
- self.base_api_url = "https://api.github.com/repos"
15
-
16
- def _get_headers(self):
17
- if not self.integration:
18
- raise ValueError("Integration not configured")
19
- credentials = self.integration.get_credentials()
20
- if "headers" in credentials:
21
- return credentials["headers"]
22
- return {
23
- "Authorization": f"Bearer {credentials['access_token']}",
24
- "Accept": "application/vnd.github.v3+json",
25
- }
26
-
27
- def star_repository(self, repo_full_name: str) -> str:
28
- """
29
- Stars a GitHub repository using the GitHub API and returns a status message.
30
-
31
- Args:
32
- repo_full_name: The full name of the repository in 'owner/repo' format (e.g., 'octocat/Hello-World')
33
-
34
- Returns:
35
- A string message indicating whether the starring operation was successful, the repository was not found, or an error occurred
36
-
37
- Raises:
38
- RequestException: If there are network connectivity issues or API request failures
39
- ValueError: If the repository name format is invalid
40
-
41
- Tags:
42
- star, github, api, action, social, repository, important
43
- """
44
- url = f"https://api.github.com/user/starred/{repo_full_name}"
45
- response = self._put(url, data={})
46
- if response.status_code == 204:
47
- return f"Successfully starred repository {repo_full_name}"
48
- elif response.status_code == 404:
49
- return f"Repository {repo_full_name} not found"
50
- else:
51
- logger.error(response.text)
52
- return f"Error starring repository: {response.text}"
53
-
54
- def list_commits(self, repo_full_name: str) -> str:
55
- """
56
- Retrieves and formats a list of recent commits from a GitHub repository
57
-
58
- Args:
59
- repo_full_name: The full name of the repository in 'owner/repo' format
60
-
61
- Returns:
62
- A formatted string containing the most recent 12 commits, including commit hash, message, and author
63
-
64
- Raises:
65
- requests.exceptions.HTTPError: When the GitHub API request fails (e.g., repository not found, rate limit exceeded)
66
- requests.exceptions.RequestException: When network issues or other request-related problems occur
67
-
68
- Tags:
69
- list, read, commits, github, history, api, important
70
- """
71
- repo_full_name = repo_full_name.strip()
72
- url = f"{self.base_api_url}/{repo_full_name}/commits"
73
- response = self._get(url)
74
- response.raise_for_status()
75
- commits = response.json()
76
- if not commits:
77
- return f"No commits found for repository {repo_full_name}"
78
- result = f"Recent commits for {repo_full_name}:\n\n"
79
- for commit in commits[:12]: # Limit to 12 commits
80
- sha = commit.get("sha", "")[:7]
81
- message = commit.get("commit", {}).get("message", "").split("\n")[0]
82
- author = commit.get("commit", {}).get("author", {}).get("name", "Unknown")
83
-
84
- result += f"- {sha}: {message} (by {author})\n"
85
- return result
86
-
87
- def list_branches(self, repo_full_name: str) -> str:
88
- """
89
- Lists all branches for a specified GitHub repository and returns them in a formatted string representation.
90
-
91
- Args:
92
- repo_full_name: The full name of the repository in 'owner/repo' format (e.g., 'octocat/Hello-World')
93
-
94
- Returns:
95
- A formatted string containing the list of branches, or a message indicating no branches were found
96
-
97
- Raises:
98
- HTTPError: When the GitHub API request fails (e.g., repository not found, authentication error)
99
- RequestException: When there are network connectivity issues or API communication problems
100
-
101
- Tags:
102
- list, branches, github, read, api, repository, important
103
- """
104
- repo_full_name = repo_full_name.strip()
105
- url = f"{self.base_api_url}/{repo_full_name}/branches"
106
- response = self._get(url)
107
- response.raise_for_status()
108
- branches = response.json()
109
- if not branches:
110
- return f"No branches found for repository {repo_full_name}"
111
- result = f"Branches for {repo_full_name}:\n\n"
112
- for branch in branches:
113
- branch_name = branch.get("name", "Unknown")
114
- result += f"- {branch_name}\n"
115
- return result
116
-
117
- def list_pull_requests(self, repo_full_name: str, state: str = "open") -> str:
118
- """
119
- Retrieves and formats a list of pull requests for a specified GitHub repository.
120
-
121
- Args:
122
- repo_full_name: The full name of the repository in the format 'owner/repo' (e.g., 'tensorflow/tensorflow')
123
- state: Filter for pull request state. Can be 'open', 'closed', or 'all'. Defaults to 'open'
124
-
125
- Returns:
126
- A formatted string containing the list of pull requests, including PR number, title, author, and status. Returns a message if no pull requests are found.
127
-
128
- Raises:
129
- HTTPError: Raised when the GitHub API request fails (e.g., invalid repository name, rate limiting, or authentication issues)
130
-
131
- Tags:
132
- list, pull-request, github, api, read, important, fetch, query
133
- """
134
- repo_full_name = repo_full_name.strip()
135
- url = f"{self.base_api_url}/{repo_full_name}/pulls"
136
- params = {"state": state}
137
- response = self._get(url, params=params)
138
- response.raise_for_status()
139
- pull_requests = response.json()
140
- if not pull_requests:
141
- return f"No pull requests found for repository {repo_full_name} with state '{state}'"
142
- result = f"Pull requests for {repo_full_name} (State: {state}):\n\n"
143
- for pr in pull_requests:
144
- pr_title = pr.get("title", "No Title")
145
- pr_number = pr.get("number", "Unknown")
146
- pr_state = pr.get("state", "Unknown")
147
- pr_user = pr.get("user", {}).get("login", "Unknown")
148
-
149
- result += (
150
- f"- PR #{pr_number}: {pr_title} (by {pr_user}, Status: {pr_state})\n"
151
- )
152
- return result
153
-
154
- def list_issues(
155
- self,
156
- repo_full_name: str,
157
- state: str = "open",
158
- assignee: str = None,
159
- labels: str = None,
160
- per_page: int = 30,
161
- page: int = 1,
162
- ) -> list[dict[str, Any]]:
163
- """
164
- Retrieves a list of issues from a specified GitHub repository with optional filtering parameters.
165
-
166
- Args:
167
- repo_full_name: The full name of the repository in 'owner/repo' format
168
- state: Filter issues by state ('open', 'closed', 'all'). Defaults to 'open'
169
- assignee: Filter by assignee username. Use 'none' for unassigned issues, '*' for assigned issues
170
- labels: Comma-separated string of label names to filter by (e.g., 'bug,ui,@high')
171
- per_page: Number of results per page (max 100). Defaults to 30
172
- page: Page number for pagination. Defaults to 1
173
-
174
- Returns:
175
- List of dictionaries containing issue data from the GitHub API response
176
-
177
- Raises:
178
- HTTPError: When the GitHub API request fails (e.g., invalid repository name, authentication failure)
179
- RequestException: When there are network connectivity issues or other request-related problems
180
-
181
- Tags:
182
- list, issues, github, api, read, filter, pagination, important, project-management
183
- """
184
- repo_full_name = repo_full_name.strip()
185
- url = f"{self.base_api_url}/{repo_full_name}/issues"
186
- params = {"state": state, "per_page": per_page, "page": page}
187
- if assignee:
188
- params["assignee"] = assignee
189
- if labels:
190
- params["labels"] = labels
191
- response = self._get(url, params=params)
192
- response.raise_for_status()
193
- return response.json()
194
-
195
- def get_pull_request(self, repo_full_name: str, pull_number: int) -> str:
196
- """
197
- Retrieves and formats detailed information about a specific GitHub pull request from a repository
198
-
199
- Args:
200
- repo_full_name: The full repository name in 'owner/repo' format (e.g., 'octocat/Hello-World')
201
- pull_number: The numeric identifier of the pull request to retrieve
202
-
203
- Returns:
204
- A formatted string containing pull request details including title, creator, status, and description
205
-
206
- Raises:
207
- HTTPError: Raised when the GitHub API request fails (e.g., invalid repository name, non-existent PR number, or authentication issues)
208
- RequestException: Raised when there are network connectivity issues or other request-related problems
209
-
210
- Tags:
211
- get, read, github, pull-request, api, fetch, format, important
212
- """
213
- repo_full_name = repo_full_name.strip()
214
- url = f"{self.base_api_url}/{repo_full_name}/pulls/{pull_number}"
215
- response = self._get(url)
216
- response.raise_for_status()
217
- pr = response.json()
218
- pr_title = pr.get("title", "No Title")
219
- pr_number = pr.get("number", "Unknown")
220
- pr_state = pr.get("state", "Unknown")
221
- pr_user = pr.get("user", {}).get("login", "Unknown")
222
- pr_body = pr.get("body", "No description provided.")
223
- result = (
224
- f"Pull Request #{pr_number}: {pr_title}\n"
225
- f"Created by: {pr_user}\n"
226
- f"Status: {pr_state}\n"
227
- f"Description: {pr_body}\n"
228
- )
229
- return result
230
-
231
- def create_pull_request(
232
- self,
233
- repo_full_name: str,
234
- head: str,
235
- base: str,
236
- title: str = None,
237
- body: str = None,
238
- issue: int = None,
239
- maintainer_can_modify: bool = True,
240
- draft: bool = False,
241
- ) -> dict[str, Any]:
242
- """
243
- Creates a new pull request in a GitHub repository, optionally converting an existing issue into a pull request.
244
-
245
- Args:
246
- repo_full_name: The full name of the repository (e.g. 'owner/repo')
247
- head: The name of the branch where your changes are implemented
248
- base: The name of the branch you want the changes pulled into
249
- title: The title of the new pull request (required if issue is not specified)
250
- body: The contents of the pull request
251
- issue: An issue number to convert to a pull request. If specified, the issue's title, body, and comments will be used
252
- maintainer_can_modify: Indicates whether maintainers can modify the pull request
253
- draft: Indicates whether the pull request is a draft
254
-
255
- Returns:
256
- A dictionary containing the complete GitHub API response
257
-
258
- Raises:
259
- ValueError: Raised when neither 'title' nor 'issue' parameter is specified
260
- HTTPError: Raised when the GitHub API request fails
261
-
262
- Tags:
263
- create, pull-request, github, api, write, important
264
- """
265
- repo_full_name = repo_full_name.strip()
266
- url = f"{self.base_api_url}/{repo_full_name}/pulls"
267
- pull_request_data = {
268
- "head": head,
269
- "base": base,
270
- "maintainer_can_modify": maintainer_can_modify,
271
- "draft": draft,
272
- }
273
- if issue is not None:
274
- pull_request_data["issue"] = issue
275
- else:
276
- if title is None:
277
- raise ValueError("Either 'title' or 'issue' must be specified")
278
- pull_request_data["title"] = title
279
- if body is not None:
280
- pull_request_data["body"] = body
281
- response = self._post(url, pull_request_data)
282
- response.raise_for_status()
283
- return response.json()
284
-
285
- def create_issue(
286
- self, repo_full_name: str, title: str, body: str = "", labels=None
287
- ) -> str:
288
- """
289
- Creates a new issue in a specified GitHub repository with a title, body content, and optional labels.
290
-
291
- Args:
292
- repo_full_name: The full name of the repository in 'owner/repo' format
293
- title: The title of the issue
294
- body: The contents/description of the issue (defaults to empty string)
295
- labels: Labels to associate with the issue, as a comma-separated string or list. Only users with push access can set labels
296
-
297
- Returns:
298
- A string containing a confirmation message with the issue number, title, and URL
299
-
300
- Raises:
301
- HTTPError: When the GitHub API request fails (e.g., invalid repository name, authentication issues, or insufficient permissions)
302
-
303
- Tags:
304
- create, issues, github, api, project-management, write, important
305
- """
306
- repo_full_name = repo_full_name.strip()
307
- url = f"{self.base_api_url}/{repo_full_name}/issues"
308
- issue_data = {"title": title, "body": body}
309
- if labels:
310
- if isinstance(labels, str):
311
- labels_list = [
312
- label.strip() for label in labels.split(",") if label.strip()
313
- ]
314
- issue_data["labels"] = labels_list
315
- else:
316
- issue_data["labels"] = labels
317
- response = self._post(url, issue_data)
318
- response.raise_for_status()
319
- issue = response.json()
320
- issue_number = issue.get("number", "Unknown")
321
- issue_url = issue.get("html_url", "")
322
- return (
323
- f"Successfully created issue #{issue_number}:\n"
324
- f"Title: {title}\n"
325
- f"URL: {issue_url}"
326
- )
327
-
328
- def list_repo_activities(
329
- self, repo_full_name: str, direction: str = "desc", per_page: int = 30
330
- ) -> str:
331
- """
332
- Retrieves and formats a list of activities for a specified GitHub repository.
333
-
334
- Args:
335
- repo_full_name: The full name of the repository in 'owner/repo' format
336
- direction: The sort direction for results ('asc' or 'desc'). Defaults to 'desc'
337
- per_page: Number of activities to return per page (1-100). Defaults to 30
338
-
339
- Returns:
340
- A formatted string containing a list of repository activities, including timestamps and actor names. Returns a 'No activities' message if no activities are found.
341
-
342
- Raises:
343
- HTTPError: Raised when the GitHub API request fails
344
- ValueError: May be raised if repo_full_name is invalid or empty after stripping
345
-
346
- Tags:
347
- list, activity, github, read, events, api, query, format
348
- """
349
- repo_full_name = repo_full_name.strip()
350
- url = f"{self.base_api_url}/{repo_full_name}/activity"
351
- params = {"direction": direction, "per_page": per_page}
352
- response = self._get(url, params=params)
353
- response.raise_for_status()
354
- activities = response.json()
355
- if not activities:
356
- return f"No activities found for repository {repo_full_name}"
357
- result = f"Repository activities for {repo_full_name}:\n\n"
358
- for activity in activities:
359
- # Extract common fields
360
- timestamp = activity.get("timestamp", "Unknown time")
361
- actor_name = "Unknown user"
362
- if "actor" in activity and activity["actor"]:
363
- actor_name = activity["actor"].get("login", "Unknown user")
364
-
365
- # Create a simple description of the activity
366
- result += f"- {actor_name} performed an activity at {timestamp}\n"
367
- return result
368
-
369
- def update_issue(
370
- self,
371
- repo_full_name: str,
372
- issue_number: int,
373
- title: str = None,
374
- body: str = None,
375
- assignee: str = None,
376
- state: str = None,
377
- state_reason: str = None,
378
- ) -> dict[str, Any]:
379
- """
380
- Updates an existing GitHub issue with specified parameters including title, body, assignee, state, and state reason.
381
-
382
- Args:
383
- repo_full_name: The full name of the repository in 'owner/repo' format
384
- issue_number: The unique identifier number of the issue to update
385
- title: The new title of the issue (optional)
386
- body: The new content/description of the issue (optional)
387
- assignee: GitHub username to assign to the issue (optional)
388
- state: The desired state of the issue ('open' or 'closed') (optional)
389
- state_reason: The reason for state change ('completed', 'not_planned', 'reopened', or null) (optional)
390
-
391
- Returns:
392
- A dictionary containing the complete GitHub API response with updated issue details
393
-
394
- Raises:
395
- HTTPError: Raised when the GitHub API request fails (e.g., invalid repository, non-existent issue, insufficient permissions)
396
- RequestException: Raised when there's a network error or API connectivity issue
397
-
398
- Tags:
399
- github, issues, update, api, project-management, write, important
400
- """
401
- url = f"{self.base_api_url}/{repo_full_name}/issues/{issue_number}"
402
- update_data = {}
403
- if title is not None:
404
- update_data["title"] = title
405
- if body is not None:
406
- update_data["body"] = body
407
- if assignee is not None:
408
- update_data["assignee"] = assignee
409
- if state is not None:
410
- update_data["state"] = state
411
- if state_reason is not None:
412
- update_data["state_reason"] = state_reason
413
- response = self._patch(url, update_data)
414
- response.raise_for_status()
415
- return response.json()
416
-
417
- def list_tools(self):
418
- return [
419
- self.star_repository,
420
- self.list_commits,
421
- self.list_branches,
422
- self.list_pull_requests,
423
- self.list_issues,
424
- self.get_pull_request,
425
- self.create_pull_request,
426
- self.create_issue,
427
- self.update_issue,
428
- self.list_repo_activities,
429
- ]
@@ -1,88 +0,0 @@
1
-
2
- # Gong MCP Server
3
-
4
- An MCP Server for the Gong 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 Gong 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_calls | Retrieves a list of call records within the specified date range, with optional pagination and workspace filtering. |
25
- | add_call | Creates and submits a new call record with detailed metadata to the remote service. |
26
- | get_call | Retrieves details for a specific call by its identifier. |
27
- | list_calls_extensive | Retrieves a list of extensive call records matching the specified filter criteria, with optional pagination and content selection. |
28
- | get_permission_profile | Retrieve the details of a permission profile by its profile ID. |
29
- | update_permission_profile | Updates an existing permission profile with the specified access settings and permissions. |
30
- | create_permission_profile | Creates a new permission profile in the specified workspace with customizable access and permission settings. |
31
- | update_meeting | Updates the details of an existing meeting with new information such as time, invitees, and title. |
32
- | delete_meeting | Deletes a meeting by its ID, optionally specifying the organizer's email. |
33
- | content_viewed | Reports a content view event to the customer engagement system with detailed metadata about the event and content. |
34
- | content_shared | Reports a content sharing event to the customer engagement system with detailed metadata about the shared content, sharer, and recipients. |
35
- | custom_action | Submits a custom customer engagement action event with detailed reporting and context information to the server. |
36
- | list_generic_crm_integration | Retrieves a list of generic CRM integrations from the API. |
37
- | register_generic_crm_integration | Registers a generic CRM integration for a given owner email and integration name. |
38
- | delete_generic_crm_integration | Deletes a generic CRM integration using the provided integration and client request IDs. |
39
- | add_users_access_to_calls | Updates user access permissions for calls by sending a PUT request with the specified access list. |
40
- | get_users_access_to_calls | Retrieves user access information for calls based on the provided filter criteria. |
41
- | delete_users_access_to_calls | Deletes a list of users' access permissions to calls. |
42
- | list_multiple_users | Retrieves a list of users based on a provided filter and optional pagination cursor. |
43
- | list_interaction_stats | Retrieves interaction statistics based on specified filter criteria, with optional pagination support. |
44
- | list_answered_scorecards | Retrieves a paginated list of answered scorecards based on the provided filter criteria. |
45
- | list_multiple_users_day_by_day_activity | Retrieves day-by-day activity statistics for multiple users based on a provided filter. |
46
- | list_multiple_users_aggregate_activity | Aggregates and returns activity statistics for multiple users based on specified filters. |
47
- | list_multiple_users_aggregate_by_period | Aggregates activity statistics for multiple users over a specified period using given filter criteria. |
48
- | add_meeting | Creates a new meeting with the specified details and returns the server's response as a dictionary. |
49
- | integration_status | Retrieves the integration status for specified email addresses via the meetings API. |
50
- | integration_settings | Sends integration type settings to the integration settings API endpoint and returns the server's response as a dictionary. |
51
- | get_flows_for_prospects | Fetches flow data for the specified CRM prospect IDs from the API. |
52
- | assign_prospects | Assigns a list of CRM prospect IDs to a specified flow instance and owner via an API POST request. |
53
- | add_digital_interaction | Submits a digital interaction event record to the API with required metadata and content. |
54
- | purge_phone_number | Erases all data associated with the specified phone number via the data privacy API. |
55
- | purge_email_address | Permanently erases all data associated with the specified email address from the system. |
56
- | list_crm_schema_fields | Retrieves the schema fields for a specified CRM object type associated with a given integration. |
57
- | upload_crm_schema_field | Uploads CRM entity schema fields to the integration service for the specified CRM object type. |
58
- | get_crm_objects | Retrieves CRM objects by their CRM IDs from a specified integration and object type. |
59
- | get_call_transcripts | Retrieves call transcripts based on the specified filter and optional pagination cursor. |
60
- | list_workspaces | Retrieves a list of all available workspaces from the API. |
61
- | list_users | Retrieves a paginated list of users from the API, with optional filtering by cursor and inclusion of avatar data. |
62
- | get_user | Retrieves user information by user ID from the API. |
63
- | get_user_history | Retrieves the settings history for a specific user by user ID. |
64
- | list_trackers | Retrieves a list of trackers for the specified workspace from the API. |
65
- | list_scorecards | Retrieves a list of scorecard settings from the API. |
66
- | list_permission_profile_users | Retrieves a list of users associated with a specified permission profile. |
67
- | list_logs | Retrieves a list of logs for the specified log type and time range, with optional cursor-based pagination. |
68
- | get_library_structure | Retrieves the hierarchical structure of library folders, optionally filtered by workspace ID. |
69
- | get_calls_in_specific_folder | Retrieves the list of calls contained within a specified folder from the remote library API. |
70
- | list_flows | Retrieves a list of flows owned by the specified user, with optional pagination and workspace filtering. |
71
- | find_all_references_to_phone_number | Fetches all references to a specified phone number from the data privacy API. |
72
- | find_all_references_to_email_address | Finds and returns all data references associated with a given email address. |
73
- | get_request_status | Retrieves the status of a CRM request using the provided integration and client request IDs. |
74
- | list_crmcalls_manual_association | Retrieves a list of manually associated CRM call records, with optional filtering by date and pagination. |
75
- | list_permission_profile | Retrieves the list of permission profiles for the specified workspace. |
76
-
77
-
78
-
79
- ## Usage
80
-
81
- - Login to AgentR
82
- - Follow the quickstart guide to setup MCP Server for your client
83
- - Visit Apps Store and enable the Gong app
84
- - Restart the MCP Server
85
-
86
- ### Local Development
87
-
88
- - Follow the README to test with the local MCP Server
File without changes