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.
- universal_mcp/applications/BEST_PRACTICES.md +166 -0
- universal_mcp/applications/airtable/app.py +0 -1
- universal_mcp/applications/apollo/app.py +0 -1
- universal_mcp/applications/aws_s3/app.py +40 -39
- universal_mcp/applications/browser_use/README.md +1 -0
- universal_mcp/applications/browser_use/__init__.py +0 -0
- universal_mcp/applications/browser_use/app.py +76 -0
- universal_mcp/applications/calendly/app.py +125 -125
- universal_mcp/applications/canva/app.py +95 -99
- universal_mcp/applications/confluence/app.py +0 -1
- universal_mcp/applications/contentful/app.py +4 -5
- universal_mcp/applications/domain_checker/app.py +11 -15
- universal_mcp/applications/e2b/app.py +4 -4
- universal_mcp/applications/elevenlabs/app.py +18 -15
- universal_mcp/applications/exa/app.py +17 -17
- universal_mcp/applications/falai/app.py +28 -29
- universal_mcp/applications/file_system/app.py +9 -9
- universal_mcp/applications/firecrawl/app.py +36 -36
- universal_mcp/applications/fireflies/app.py +55 -56
- universal_mcp/applications/fpl/app.py +49 -50
- universal_mcp/applications/ghost_content/app.py +0 -1
- universal_mcp/applications/github/app.py +41 -43
- universal_mcp/applications/google_calendar/app.py +40 -39
- universal_mcp/applications/google_docs/app.py +56 -56
- universal_mcp/applications/google_drive/app.py +212 -215
- universal_mcp/applications/google_gemini/app.py +1 -5
- universal_mcp/applications/google_mail/app.py +91 -90
- universal_mcp/applications/google_searchconsole/app.py +29 -29
- universal_mcp/applications/google_sheet/app.py +115 -115
- universal_mcp/applications/hashnode/README.md +6 -3
- universal_mcp/applications/hashnode/app.py +174 -25
- universal_mcp/applications/http_tools/app.py +10 -11
- universal_mcp/applications/hubspot/__init__.py +1 -1
- universal_mcp/applications/hubspot/api_segments/api_segment_base.py +36 -7
- universal_mcp/applications/hubspot/api_segments/crm_api.py +368 -368
- universal_mcp/applications/hubspot/api_segments/marketing_api.py +115 -115
- universal_mcp/applications/hubspot/app.py +131 -72
- universal_mcp/applications/jira/app.py +0 -1
- universal_mcp/applications/linkedin/app.py +20 -20
- universal_mcp/applications/markitdown/app.py +10 -5
- universal_mcp/applications/ms_teams/app.py +123 -123
- universal_mcp/applications/openai/app.py +40 -39
- universal_mcp/applications/outlook/app.py +32 -32
- universal_mcp/applications/perplexity/app.py +4 -4
- universal_mcp/applications/reddit/app.py +69 -70
- universal_mcp/applications/resend/app.py +116 -117
- universal_mcp/applications/rocketlane/app.py +0 -1
- universal_mcp/applications/scraper/__init__.py +1 -1
- universal_mcp/applications/scraper/app.py +234 -16
- universal_mcp/applications/serpapi/app.py +14 -14
- universal_mcp/applications/sharepoint/app.py +19 -20
- universal_mcp/applications/shopify/app.py +0 -1
- universal_mcp/applications/slack/app.py +48 -48
- universal_mcp/applications/tavily/app.py +4 -4
- universal_mcp/applications/twitter/api_segments/compliance_api.py +13 -15
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +20 -20
- universal_mcp/applications/twitter/api_segments/dm_events_api.py +12 -12
- universal_mcp/applications/twitter/api_segments/likes_api.py +12 -12
- universal_mcp/applications/twitter/api_segments/lists_api.py +37 -39
- universal_mcp/applications/twitter/api_segments/spaces_api.py +24 -24
- universal_mcp/applications/twitter/api_segments/trends_api.py +4 -4
- universal_mcp/applications/twitter/api_segments/tweets_api.py +105 -105
- universal_mcp/applications/twitter/api_segments/usage_api.py +4 -4
- universal_mcp/applications/twitter/api_segments/users_api.py +136 -136
- universal_mcp/applications/twitter/app.py +6 -2
- universal_mcp/applications/unipile/app.py +321 -71
- universal_mcp/applications/whatsapp/app.py +53 -54
- universal_mcp/applications/whatsapp/audio.py +39 -35
- universal_mcp/applications/whatsapp/whatsapp.py +176 -154
- universal_mcp/applications/whatsapp_business/app.py +92 -92
- universal_mcp/applications/yahoo_finance/app.py +105 -63
- universal_mcp/applications/youtube/app.py +206 -199
- universal_mcp/applications/zenquotes/__init__.py +2 -0
- universal_mcp/applications/zenquotes/app.py +3 -3
- {universal_mcp_applications-0.1.20.dist-info → universal_mcp_applications-0.1.22.dist-info}/METADATA +2 -1
- {universal_mcp_applications-0.1.20.dist-info → universal_mcp_applications-0.1.22.dist-info}/RECORD +78 -74
- {universal_mcp_applications-0.1.20.dist-info → universal_mcp_applications-0.1.22.dist-info}/WHEEL +0 -0
- {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
|
"""
|
|
@@ -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
|
+
]
|