universal-mcp-applications 0.1.20__py3-none-any.whl → 0.1.22__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 (78) hide show
  1. universal_mcp/applications/BEST_PRACTICES.md +166 -0
  2. universal_mcp/applications/airtable/app.py +0 -1
  3. universal_mcp/applications/apollo/app.py +0 -1
  4. universal_mcp/applications/aws_s3/app.py +40 -39
  5. universal_mcp/applications/browser_use/README.md +1 -0
  6. universal_mcp/applications/browser_use/__init__.py +0 -0
  7. universal_mcp/applications/browser_use/app.py +76 -0
  8. universal_mcp/applications/calendly/app.py +125 -125
  9. universal_mcp/applications/canva/app.py +95 -99
  10. universal_mcp/applications/confluence/app.py +0 -1
  11. universal_mcp/applications/contentful/app.py +4 -5
  12. universal_mcp/applications/domain_checker/app.py +11 -15
  13. universal_mcp/applications/e2b/app.py +4 -4
  14. universal_mcp/applications/elevenlabs/app.py +18 -15
  15. universal_mcp/applications/exa/app.py +17 -17
  16. universal_mcp/applications/falai/app.py +28 -29
  17. universal_mcp/applications/file_system/app.py +9 -9
  18. universal_mcp/applications/firecrawl/app.py +36 -36
  19. universal_mcp/applications/fireflies/app.py +55 -56
  20. universal_mcp/applications/fpl/app.py +49 -50
  21. universal_mcp/applications/ghost_content/app.py +0 -1
  22. universal_mcp/applications/github/app.py +41 -43
  23. universal_mcp/applications/google_calendar/app.py +40 -39
  24. universal_mcp/applications/google_docs/app.py +56 -56
  25. universal_mcp/applications/google_drive/app.py +212 -215
  26. universal_mcp/applications/google_gemini/app.py +1 -5
  27. universal_mcp/applications/google_mail/app.py +91 -90
  28. universal_mcp/applications/google_searchconsole/app.py +29 -29
  29. universal_mcp/applications/google_sheet/app.py +115 -115
  30. universal_mcp/applications/hashnode/README.md +6 -3
  31. universal_mcp/applications/hashnode/app.py +174 -25
  32. universal_mcp/applications/http_tools/app.py +10 -11
  33. universal_mcp/applications/hubspot/__init__.py +1 -1
  34. universal_mcp/applications/hubspot/api_segments/api_segment_base.py +36 -7
  35. universal_mcp/applications/hubspot/api_segments/crm_api.py +368 -368
  36. universal_mcp/applications/hubspot/api_segments/marketing_api.py +115 -115
  37. universal_mcp/applications/hubspot/app.py +131 -72
  38. universal_mcp/applications/jira/app.py +0 -1
  39. universal_mcp/applications/linkedin/app.py +20 -20
  40. universal_mcp/applications/markitdown/app.py +10 -5
  41. universal_mcp/applications/ms_teams/app.py +123 -123
  42. universal_mcp/applications/openai/app.py +40 -39
  43. universal_mcp/applications/outlook/app.py +32 -32
  44. universal_mcp/applications/perplexity/app.py +4 -4
  45. universal_mcp/applications/reddit/app.py +69 -70
  46. universal_mcp/applications/resend/app.py +116 -117
  47. universal_mcp/applications/rocketlane/app.py +0 -1
  48. universal_mcp/applications/scraper/__init__.py +1 -1
  49. universal_mcp/applications/scraper/app.py +234 -16
  50. universal_mcp/applications/serpapi/app.py +14 -14
  51. universal_mcp/applications/sharepoint/app.py +19 -20
  52. universal_mcp/applications/shopify/app.py +0 -1
  53. universal_mcp/applications/slack/app.py +48 -48
  54. universal_mcp/applications/tavily/app.py +4 -4
  55. universal_mcp/applications/twitter/api_segments/compliance_api.py +13 -15
  56. universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +20 -20
  57. universal_mcp/applications/twitter/api_segments/dm_events_api.py +12 -12
  58. universal_mcp/applications/twitter/api_segments/likes_api.py +12 -12
  59. universal_mcp/applications/twitter/api_segments/lists_api.py +37 -39
  60. universal_mcp/applications/twitter/api_segments/spaces_api.py +24 -24
  61. universal_mcp/applications/twitter/api_segments/trends_api.py +4 -4
  62. universal_mcp/applications/twitter/api_segments/tweets_api.py +105 -105
  63. universal_mcp/applications/twitter/api_segments/usage_api.py +4 -4
  64. universal_mcp/applications/twitter/api_segments/users_api.py +136 -136
  65. universal_mcp/applications/twitter/app.py +6 -2
  66. universal_mcp/applications/unipile/app.py +321 -71
  67. universal_mcp/applications/whatsapp/app.py +53 -54
  68. universal_mcp/applications/whatsapp/audio.py +39 -35
  69. universal_mcp/applications/whatsapp/whatsapp.py +176 -154
  70. universal_mcp/applications/whatsapp_business/app.py +92 -92
  71. universal_mcp/applications/yahoo_finance/app.py +105 -63
  72. universal_mcp/applications/youtube/app.py +206 -199
  73. universal_mcp/applications/zenquotes/__init__.py +2 -0
  74. universal_mcp/applications/zenquotes/app.py +3 -3
  75. {universal_mcp_applications-0.1.20.dist-info → universal_mcp_applications-0.1.22.dist-info}/METADATA +2 -1
  76. {universal_mcp_applications-0.1.20.dist-info → universal_mcp_applications-0.1.22.dist-info}/RECORD +78 -74
  77. {universal_mcp_applications-0.1.20.dist-info → universal_mcp_applications-0.1.22.dist-info}/WHEEL +0 -0
  78. {universal_mcp_applications-0.1.20.dist-info → universal_mcp_applications-0.1.22.dist-info}/licenses/LICENSE +0 -0
@@ -3,7 +3,6 @@ from datetime import datetime
3
3
  from typing import Any
4
4
 
5
5
  import requests
6
-
7
6
  from universal_mcp.applications.application import APIApplication
8
7
  from universal_mcp.integrations import Integration
9
8
 
@@ -49,9 +48,9 @@ class FplApp(APIApplication):
49
48
  ) -> dict[str, Any]:
50
49
  """
51
50
  Performs advanced analysis on an FPL league for a given gameweek range. It routes requests based on the analysis type ('overview', 'historical', 'team_composition') to provide deeper insights beyond the basic rankings from `get_league_standings`, such as historical performance or team composition.
52
-
51
+
53
52
  Returns visualization-optimized data for various types of league analysis.
54
-
53
+
55
54
  Args:
56
55
  league_id: ID of the league to analyze
57
56
  analysis_type: Type of analysis to perform:
@@ -61,14 +60,14 @@ class FplApp(APIApplication):
61
60
  start_gw: Starting gameweek (defaults to 1)
62
61
  end_gw: Ending gameweek (defaults to current)
63
62
  api: FPL API instance (import from your api.py)
64
-
63
+
65
64
  Returns:
66
65
  Rich analytics data structured for visualization
67
-
66
+
68
67
  Raises:
69
68
  ValueError: Raised when analysis_type is invalid.
70
69
  RuntimeError: Raised when API request fails.
71
-
70
+
72
71
  Tags:
73
72
  leagues, analytics, important
74
73
  """
@@ -168,17 +167,17 @@ class FplApp(APIApplication):
168
167
  def get_league_standings(self, league_id: int) -> dict[str, Any]:
169
168
  """
170
169
  Retrieves current standings for a specified FPL classic mini-league by its ID. It fetches and parses raw API data to provide a direct snapshot of the league table, distinguishing it from `get_league_analytics` which performs deeper, historical analysis.
171
-
170
+
172
171
  Args:
173
172
  league_id: ID of the league to fetch
174
-
173
+
175
174
  Returns:
176
175
  League information with standings and team details
177
-
176
+
178
177
  Raises:
179
178
  ValueError: Raised when league_id is invalid.
180
179
  RuntimeError: Raised when API request fails.
181
-
180
+
182
181
  Tags:
183
182
  leagues, standings, important
184
183
  """
@@ -217,7 +216,7 @@ class FplApp(APIApplication):
217
216
  ) -> dict[str, Any]:
218
217
  """
219
218
  Fetches a detailed profile for a specific FPL player, identified by ID or name. It can include gameweek performance history, filterable by range, and future fixtures. This provides an in-depth look at one player, differing from broader search or analysis functions like `search_fpl_players`.
220
-
219
+
221
220
  Args:
222
221
  player_id: FPL player ID (if provided, takes precedence over player_name)
223
222
  player_name: Player name to search for (used if player_id not provided)
@@ -225,14 +224,14 @@ class FplApp(APIApplication):
225
224
  end_gameweek: Ending gameweek for filtering player history
226
225
  include_history: Whether to include gameweek-by-gameweek history
227
226
  include_fixtures: Whether to include upcoming fixtures
228
-
227
+
229
228
  Returns:
230
229
  Comprehensive player information including stats and history
231
-
230
+
232
231
  Raises:
233
232
  ValueError: Raised when both player_id and player_name are missing.
234
233
  KeyError: Raised when player is not found in the database.
235
-
234
+
236
235
  Tags:
237
236
  players, important
238
237
  """
@@ -254,20 +253,20 @@ class FplApp(APIApplication):
254
253
  ) -> dict[str, Any]:
255
254
  """
256
255
  Searches for FPL players by full or partial name with optional filtering by team and position. This is a discovery tool, differentiating it from `get_player_information` which fetches a specific known player. It serves as a public interface to the internal `search_players` utility.
257
-
256
+
258
257
  Args:
259
258
  query: Player name or partial name to search for
260
259
  position: Optional position filter (GKP, DEF, MID, FWD)
261
260
  team: Optional team name filter
262
261
  limit: Maximum number of results to return
263
-
262
+
264
263
  Returns:
265
264
  List of matching players with details
266
-
265
+
267
266
  Raises:
268
267
  ValueError: Raised when query parameter is empty or invalid.
269
268
  TypeError: Raised when position or team filters are invalid.
270
-
269
+
271
270
  Tags:
272
271
  players, search, important
273
272
  """
@@ -276,14 +275,14 @@ class FplApp(APIApplication):
276
275
  def get_gameweek_snapshot(self) -> dict[str, Any]:
277
276
  """
278
277
  Provides a detailed snapshot of the FPL schedule by identifying the current, previous, and next gameweeks. It calculates the precise real-time status of the current gameweek (e.g., 'Imminent', 'In Progress') and returns key deadline times and overall season progress.
279
-
278
+
280
279
  Returns:
281
280
  Detailed information about gameweek timing, including exact status.
282
-
281
+
283
282
  Raises:
284
283
  RuntimeError: If gameweek data cannot be retrieved.
285
284
  ValueError: If gameweek data is malformed or incomplete.
286
-
285
+
287
286
  Tags:
288
287
  gameweek, status, timing, important
289
288
  """
@@ -345,7 +344,7 @@ class FplApp(APIApplication):
345
344
  ) -> dict[str, Any]:
346
345
  """
347
346
  Filters the FPL player database using multiple criteria like position, price, points, and form. Returns a sorted list of matching players, summary statistics for the filtered group, and optional recent gameweek performance data to aid in player discovery and analysis.
348
-
347
+
349
348
  Args:
350
349
  position: Player position (e.g., "midfielders", "defenders")
351
350
  team: Team name filter
@@ -360,14 +359,14 @@ class FplApp(APIApplication):
360
359
  sort_by: Metric to sort results by (default: total_points)
361
360
  sort_order: Sort direction ("asc" or "desc")
362
361
  limit: Maximum number of players to return
363
-
362
+
364
363
  Returns:
365
364
  Filtered player data with summary statistics
366
-
365
+
367
366
  Raises:
368
367
  ValueError: Raised when query parameter is empty or invalid.
369
368
  TypeError: Raised when position or team filters are invalid.
370
-
369
+
371
370
  Tags:
372
371
  players, analyze, important
373
372
  """
@@ -610,21 +609,21 @@ class FplApp(APIApplication):
610
609
  ) -> dict[str, Any]:
611
610
  """
612
611
  Performs a detailed comparison of multiple players based on specified metrics, recent gameweek history, and upcoming fixture analysis. It provides a side-by-side breakdown, identifies the best performer per metric, and determines an overall winner, considering fixture difficulty, blanks, and doubles for a comprehensive overview.
613
-
612
+
614
613
  Args:
615
614
  player_names: List of player names to compare (2-5 players recommended)
616
615
  metrics: List of metrics to compare
617
616
  include_gameweeks: Whether to include gameweek-by-gameweek comparison
618
617
  num_gameweeks: Number of recent gameweeks to include in comparison
619
618
  include_fixture_analysis: Whether to include fixture analysis including blanks and doubles
620
-
619
+
621
620
  Returns:
622
621
  Detailed comparison of players across the specified metrics
623
-
622
+
624
623
  Raises:
625
624
  ValueError: Raised when player_names parameter is empty or invalid.
626
625
  TypeError: Raised when metrics parameter is invalid.
627
-
626
+
628
627
  Tags:
629
628
  players, compare, important
630
629
  """
@@ -943,18 +942,18 @@ class FplApp(APIApplication):
943
942
  ) -> dict[str, Any]:
944
943
  """
945
944
  Analyzes a player's upcoming fixture difficulty. Given a player's name, it retrieves their schedule for a set number of matches, returning a detailed list and a calculated difficulty rating. This method is a focused alternative to the more comprehensive `analyze_fixtures` function.
946
-
945
+
947
946
  Args:
948
947
  player_name: Player name to search for
949
948
  num_fixtures: Number of upcoming fixtures to analyze (default: 5)
950
-
949
+
951
950
  Returns:
952
951
  Analysis of player's upcoming fixtures with difficulty ratings
953
-
952
+
954
953
  Raises:
955
954
  ValueError: Raised when player_name parameter is empty or invalid.
956
955
  TypeError: Raised when num_fixtures parameter is invalid.
957
-
956
+
958
957
  Tags:
959
958
  players, fixtures, important
960
959
  """
@@ -979,21 +978,21 @@ class FplApp(APIApplication):
979
978
  ) -> dict[str, Any]:
980
979
  """
981
980
  Provides a detailed fixture difficulty analysis for a specific player, team, or an entire position over a set number of gameweeks. It calculates a difficulty score and can include blank/double gameweek data, offering broader analysis than the player-only `analyze_player_fixtures`.
982
-
981
+
983
982
  Args:
984
983
  entity_type: Type of entity to analyze ("player", "team", or "position")
985
984
  entity_name: Name of the specific entity
986
985
  num_gameweeks: Number of gameweeks to look ahead
987
986
  include_blanks: Whether to include blank gameweek info
988
987
  include_doubles: Whether to include double gameweek info
989
-
988
+
990
989
  Returns:
991
990
  Fixture analysis with difficulty ratings and summary
992
-
991
+
993
992
  Raises:
994
993
  ValueError: Raised when entity_type parameter is invalid.
995
994
  TypeError: Raised when num_gameweeks parameter is invalid.
996
-
995
+
997
996
  Tags:
998
997
  players, fixtures, important
999
998
  """
@@ -1261,17 +1260,17 @@ class FplApp(APIApplication):
1261
1260
  def get_blank_gameweeks(self, num_weeks: int = 5) -> list[dict[str, Any]]:
1262
1261
  """
1263
1262
  Identifies upcoming 'blank' gameweeks where teams lack a scheduled fixture. The function returns a list detailing each blank gameweek and the affected teams within a specified number of weeks, which is essential for strategic planning. It is distinct from `get_double_gameweeks`.
1264
-
1263
+
1265
1264
  Args:
1266
1265
  num_weeks: Number of upcoming gameweeks to check (default: 5)
1267
-
1266
+
1268
1267
  Returns:
1269
1268
  Information about blank gameweeks and affected teams
1270
-
1269
+
1271
1270
  Raises:
1272
1271
  ValueError: Raised when num_weeks parameter is invalid.
1273
1272
  TypeError: Raised when num_weeks parameter has incorrect type.
1274
-
1273
+
1275
1274
  Tags:
1276
1275
  gameweeks, blanks, important
1277
1276
  """
@@ -1280,17 +1279,17 @@ class FplApp(APIApplication):
1280
1279
  def get_double_gameweeks(self, num_weeks: int = 5) -> list[dict[str, Any]]:
1281
1280
  """
1282
1281
  Identifies upcoming double gameweeks where teams have multiple fixtures within a specified number of weeks. It returns a list detailing each double gameweek and the teams involved. This function specifically finds gameweeks with extra matches, unlike `get_blank_gameweeks` which finds those with none.
1283
-
1282
+
1284
1283
  Args:
1285
1284
  num_weeks: Number of upcoming gameweeks to check (default: 5)
1286
-
1285
+
1287
1286
  Returns:
1288
1287
  Information about double gameweeks and affected teams
1289
-
1288
+
1290
1289
  Raises:
1291
1290
  ValueError: Raised when num_weeks parameter is invalid.
1292
1291
  TypeError: Raised when num_weeks parameter has incorrect type.
1293
-
1292
+
1294
1293
  Tags:
1295
1294
  gameweeks, doubles, important
1296
1295
  """
@@ -1299,17 +1298,17 @@ class FplApp(APIApplication):
1299
1298
  def get_manager_team_info(self, team_id: str) -> dict[str, Any]:
1300
1299
  """
1301
1300
  Retrieves detailed information for a specific FPL manager's team (an "entry") using its unique ID. This is distinct from functions analyzing Premier League clubs, as it targets an individual user's fantasy squad and its performance details within the game.
1302
-
1301
+
1303
1302
  Args:
1304
1303
  team_id: The ID of the team to get information about
1305
-
1304
+
1306
1305
  Returns:
1307
1306
  Information about the team
1308
-
1307
+
1309
1308
  Raises:
1310
1309
  ValueError: Raised when team_id parameter is invalid.
1311
-
1312
-
1310
+
1311
+
1313
1312
  Tags:
1314
1313
  teams, important
1315
1314
  """
@@ -2,7 +2,6 @@ from collections.abc import Callable
2
2
  from typing import Any
3
3
 
4
4
  from loguru import logger
5
-
6
5
  from universal_mcp.applications.application import APIApplication
7
6
  from universal_mcp.integrations import Integration
8
7
 
@@ -1,7 +1,6 @@
1
1
  from typing import Any
2
2
 
3
3
  from loguru import logger
4
-
5
4
  from universal_mcp.applications.application import APIApplication
6
5
  from universal_mcp.integrations import Integration
7
6
 
@@ -26,17 +25,17 @@ class GithubApp(APIApplication):
26
25
  def star_repository(self, repo_full_name: str) -> str:
27
26
  """
28
27
  Stars a GitHub repository for the authenticated user. This user-centric action takes the full repository name ('owner/repo') and returns a simple string message confirming the outcome, unlike other functions that list or create repository content like issues or pull requests.
29
-
28
+
30
29
  Args:
31
30
  repo_full_name: The full name of the repository in 'owner/repo' format (e.g., 'octocat/Hello-World')
32
-
31
+
33
32
  Returns:
34
33
  A string message indicating whether the starring operation was successful, the repository was not found, or an error occurred
35
-
34
+
36
35
  Raises:
37
36
  RequestException: If there are network connectivity issues or API request failures
38
37
  ValueError: If the repository name format is invalid
39
-
38
+
40
39
  Tags:
41
40
  star, github, api, action, social, repository, important
42
41
  """
@@ -53,17 +52,17 @@ class GithubApp(APIApplication):
53
52
  def list_recent_commits(self, repo_full_name: str) -> str:
54
53
  """
55
54
  Fetches and formats the 12 most recent commits from a repository. It returns a human-readable string summarizing each commit's hash, author, and message, providing a focused overview of recent code changes, unlike functions that list branches, issues, or pull requests.
56
-
55
+
57
56
  Args:
58
57
  repo_full_name: The full name of the repository in 'owner/repo' format
59
-
58
+
60
59
  Returns:
61
60
  A formatted string containing the most recent 12 commits, including commit hash, message, and author
62
-
61
+
63
62
  Raises:
64
63
  requests.exceptions.HTTPError: When the GitHub API request fails (e.g., repository not found, rate limit exceeded)
65
64
  requests.exceptions.RequestException: When network issues or other request-related problems occur
66
-
65
+
67
66
  Tags:
68
67
  list, read, commits, github, history, api, important
69
68
  """
@@ -86,17 +85,17 @@ class GithubApp(APIApplication):
86
85
  def list_branches(self, repo_full_name: str) -> str:
87
86
  """
88
87
  Fetches all branches for a specified GitHub repository and formats them into a human-readable string. This method is distinct from others like `search_issues`, as it returns a formatted list for display rather than raw JSON data for programmatic use.
89
-
88
+
90
89
  Args:
91
90
  repo_full_name: The full name of the repository in 'owner/repo' format (e.g., 'octocat/Hello-World')
92
-
91
+
93
92
  Returns:
94
93
  A formatted string containing the list of branches, or a message indicating no branches were found
95
-
94
+
96
95
  Raises:
97
96
  HTTPError: When the GitHub API request fails (e.g., repository not found, authentication error)
98
97
  RequestException: When there are network connectivity issues or API communication problems
99
-
98
+
100
99
  Tags:
101
100
  list, branches, github, read, api, repository, important
102
101
  """
@@ -116,17 +115,17 @@ class GithubApp(APIApplication):
116
115
  def list_pull_requests(self, repo_full_name: str, state: str = "open") -> str:
117
116
  """
118
117
  Fetches pull requests for a repository, filtered by state (e.g., 'open'). It returns a formatted string summarizing each PR's details, distinguishing it from `get_pull_request` (single PR) and `search_issues` (raw issue data).
119
-
118
+
120
119
  Args:
121
120
  repo_full_name: The full name of the repository in the format 'owner/repo' (e.g., 'tensorflow/tensorflow')
122
121
  state: Filter for pull request state. Can be 'open', 'closed', or 'all'. Defaults to 'open'
123
-
122
+
124
123
  Returns:
125
124
  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.
126
-
125
+
127
126
  Raises:
128
127
  HTTPError: Raised when the GitHub API request fails (e.g., invalid repository name, rate limiting, or authentication issues)
129
-
128
+
130
129
  Tags:
131
130
  list, pull-request, github, api, read, important, fetch, query
132
131
  """
@@ -161,7 +160,7 @@ class GithubApp(APIApplication):
161
160
  ) -> list[dict[str, Any]]:
162
161
  """
163
162
  Fetches issues from a GitHub repository using specified filters (state, assignee, labels) and pagination. It returns the raw API response as a list of dictionaries, providing detailed issue data for programmatic processing, distinct from other methods that return formatted strings.
164
-
163
+
165
164
  Args:
166
165
  repo_full_name: The full name of the repository in 'owner/repo' format
167
166
  state: Filter issues by state ('open', 'closed', 'all'). Defaults to 'open'
@@ -169,14 +168,14 @@ class GithubApp(APIApplication):
169
168
  labels: Comma-separated string of label names to filter by (e.g., 'bug,ui,@high')
170
169
  per_page: Number of results per page (max 100). Defaults to 30
171
170
  page: Page number for pagination. Defaults to 1
172
-
171
+
173
172
  Returns:
174
173
  List of dictionaries containing issue data from the GitHub API response
175
-
174
+
176
175
  Raises:
177
176
  HTTPError: When the GitHub API request fails (e.g., invalid repository name, authentication failure)
178
177
  RequestException: When there are network connectivity issues or other request-related problems
179
-
178
+
180
179
  Tags:
181
180
  list, issues, github, api, read, filter, pagination, important, project-management
182
181
  """
@@ -194,18 +193,18 @@ class GithubApp(APIApplication):
194
193
  def get_pull_request(self, repo_full_name: str, pull_number: int) -> str:
195
194
  """
196
195
  Fetches a specific pull request from a repository using its unique number. It returns a human-readable string summarizing the PR's title, creator, status, and description, unlike `list_pull_requests` which retrieves a list of multiple PRs.
197
-
196
+
198
197
  Args:
199
198
  repo_full_name: The full repository name in 'owner/repo' format (e.g., 'octocat/Hello-World')
200
199
  pull_number: The numeric identifier of the pull request to retrieve
201
-
200
+
202
201
  Returns:
203
202
  A formatted string containing pull request details including title, creator, status, and description
204
-
203
+
205
204
  Raises:
206
205
  HTTPError: Raised when the GitHub API request fails (e.g., invalid repository name, non-existent PR number, or authentication issues)
207
206
  RequestException: Raised when there are network connectivity issues or other request-related problems
208
-
207
+
209
208
  Tags:
210
209
  get, read, github, pull-request, api, fetch, format, important
211
210
  """
@@ -240,7 +239,7 @@ class GithubApp(APIApplication):
240
239
  ) -> dict[str, Any]:
241
240
  """
242
241
  Creates a pull request between specified `head` and `base` branches, or converts an issue into a PR. Unlike read functions that return formatted strings, this write operation returns the raw API response as a dictionary, providing comprehensive data on the newly created pull request.
243
-
242
+
244
243
  Args:
245
244
  repo_full_name: The full name of the repository (e.g. 'owner/repo')
246
245
  head: The name of the branch where your changes are implemented
@@ -250,14 +249,14 @@ class GithubApp(APIApplication):
250
249
  issue: An issue number to convert to a pull request. If specified, the issue's title, body, and comments will be used
251
250
  maintainer_can_modify: Indicates whether maintainers can modify the pull request
252
251
  draft: Indicates whether the pull request is a draft
253
-
252
+
254
253
  Returns:
255
254
  A dictionary containing the complete GitHub API response
256
-
255
+
257
256
  Raises:
258
257
  ValueError: Raised when neither 'title' nor 'issue' parameter is specified
259
258
  HTTPError: Raised when the GitHub API request fails
260
-
259
+
261
260
  Tags:
262
261
  create, pull-request, github, api, write, important
263
262
  """
@@ -286,19 +285,19 @@ class GithubApp(APIApplication):
286
285
  ) -> str:
287
286
  """
288
287
  Creates a new issue in a GitHub repository using a title, body, and optional labels. It returns a formatted confirmation string with the new issue's number and URL, differing from `update_issue` which modifies existing issues and `search_issues` which returns raw API data.
289
-
288
+
290
289
  Args:
291
290
  repo_full_name: The full name of the repository in 'owner/repo' format
292
291
  title: The title of the issue
293
292
  body: The contents/description of the issue (defaults to empty string)
294
293
  labels: Labels to associate with the issue, as a comma-separated string or list. Only users with push access can set labels
295
-
294
+
296
295
  Returns:
297
296
  A string containing a confirmation message with the issue number, title, and URL
298
-
297
+
299
298
  Raises:
300
299
  HTTPError: When the GitHub API request fails (e.g., invalid repository name, authentication issues, or insufficient permissions)
301
-
300
+
302
301
  Tags:
303
302
  create, issues, github, api, project-management, write, important
304
303
  """
@@ -329,19 +328,19 @@ class GithubApp(APIApplication):
329
328
  ) -> str:
330
329
  """
331
330
  Fetches recent events for a GitHub repository and formats them into a human-readable string. It summarizes activities with actors and timestamps, providing a general event feed, unlike other `list_*` functions which retrieve specific resources like commits or issues.
332
-
331
+
333
332
  Args:
334
333
  repo_full_name: The full name of the repository in 'owner/repo' format
335
334
  direction: The sort direction for results ('asc' or 'desc'). Defaults to 'desc'
336
335
  per_page: Number of activities to return per page (1-100). Defaults to 30
337
-
336
+
338
337
  Returns:
339
338
  A formatted string containing a list of repository activities, including timestamps and actor names. Returns a 'No activities' message if no activities are found.
340
-
339
+
341
340
  Raises:
342
341
  HTTPError: Raised when the GitHub API request fails
343
342
  ValueError: May be raised if repo_full_name is invalid or empty after stripping
344
-
343
+
345
344
  Tags:
346
345
  list, activity, github, read, events, api, query, format
347
346
  """
@@ -377,7 +376,7 @@ class GithubApp(APIApplication):
377
376
  ) -> dict[str, Any]:
378
377
  """
379
378
  Modifies an existing GitHub issue, identified by its number within a repository. It can update optional fields like title, body, or state and returns the raw API response as a dictionary, differentiating it from `create_issue` which makes new issues and returns a formatted string.
380
-
379
+
381
380
  Args:
382
381
  repo_full_name: The full name of the repository in 'owner/repo' format
383
382
  issue_number: The unique identifier number of the issue to update
@@ -386,14 +385,14 @@ class GithubApp(APIApplication):
386
385
  assignee: GitHub username to assign to the issue (optional)
387
386
  state: The desired state of the issue ('open' or 'closed') (optional)
388
387
  state_reason: The reason for state change ('completed', 'not_planned', 'reopened', or null) (optional)
389
-
388
+
390
389
  Returns:
391
390
  A dictionary containing the complete GitHub API response with updated issue details
392
-
391
+
393
392
  Raises:
394
393
  HTTPError: Raised when the GitHub API request fails (e.g., invalid repository, non-existent issue, insufficient permissions)
395
394
  RequestException: Raised when there's a network error or API connectivity issue
396
-
395
+
397
396
  Tags:
398
397
  github, issues, update, api, project-management, write, important
399
398
  """
@@ -413,7 +412,6 @@ class GithubApp(APIApplication):
413
412
  response.raise_for_status()
414
413
  return response.json()
415
414
 
416
-
417
415
  def list_tools(self):
418
416
  return [
419
417
  self.star_repository,
@@ -426,4 +424,4 @@ class GithubApp(APIApplication):
426
424
  self.create_issue,
427
425
  self.update_issue,
428
426
  self.list_repo_activities,
429
- ]
427
+ ]