universal-mcp-applications 0.1.21__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 +80 -81
  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 +90 -97
  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 +193 -196
  73. universal_mcp/applications/zenquotes/__init__.py +2 -0
  74. universal_mcp/applications/zenquotes/app.py +3 -3
  75. {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.22.dist-info}/METADATA +2 -1
  76. {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.22.dist-info}/RECORD +78 -74
  77. {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.22.dist-info}/WHEEL +0 -0
  78. {universal_mcp_applications-0.1.21.dist-info → universal_mcp_applications-0.1.22.dist-info}/licenses/LICENSE +0 -0
@@ -167,18 +167,18 @@ class FirecrawlApp(APIApplication):
167
167
  def scrape_url(self, url: str) -> Any:
168
168
  """
169
169
  Synchronously scrapes a single URL, immediately returning its content. This provides a direct method for single-page scraping, contrasting with asynchronous, job-based functions like `start_crawl` (for entire sites) and `start_batch_scrape` (for multiple URLs).
170
-
170
+
171
171
  Args:
172
172
  url: The URL of the web page to scrape.
173
-
173
+
174
174
  Returns:
175
175
  A dictionary containing the scraped data on success,
176
176
  or a string containing an error message on failure.
177
-
177
+
178
178
  Raises:
179
179
  NotAuthorizedError: If API key is missing or invalid.
180
180
  ToolError: If the Firecrawl SDK is not installed.
181
-
181
+
182
182
  Tags:
183
183
  scrape, important
184
184
  """
@@ -199,18 +199,18 @@ class FirecrawlApp(APIApplication):
199
199
  def search(self, query: str) -> dict[str, Any] | str:
200
200
  """
201
201
  Executes a synchronous web search using the Firecrawl service for a given query. Unlike scrape_url which fetches a single page, this function discovers web content. It returns a dictionary of results on success or an error string on failure, raising exceptions for authorization or SDK issues.
202
-
202
+
203
203
  Args:
204
204
  query: The search query string.
205
-
205
+
206
206
  Returns:
207
207
  A dictionary containing the search results on success,
208
208
  or a string containing an error message on failure.
209
-
209
+
210
210
  Raises:
211
211
  NotAuthorizedError: If API key is missing or invalid.
212
212
  ToolError: If the Firecrawl SDK is not installed.
213
-
213
+
214
214
  Tags:
215
215
  search, important
216
216
  """
@@ -233,18 +233,18 @@ class FirecrawlApp(APIApplication):
233
233
  ) -> dict[str, Any] | str:
234
234
  """
235
235
  Starts an asynchronous Firecrawl job to crawl a website from a given URL, returning a job ID. Unlike the synchronous `scrape_url` for single pages, this function initiates a comprehensive, link-following crawl. Progress can be monitored using the `check_crawl_status` function with the returned ID.
236
-
236
+
237
237
  Args:
238
238
  url: The starting URL for the crawl.
239
-
239
+
240
240
  Returns:
241
241
  A dictionary containing the job initiation response on success,
242
242
  or a string containing an error message on failure.
243
-
243
+
244
244
  Raises:
245
245
  NotAuthorizedError: If API key is missing or invalid.
246
246
  ToolError: If the Firecrawl SDK is not installed.
247
-
247
+
248
248
  Tags:
249
249
  crawl, async_job, start
250
250
  """
@@ -269,18 +269,18 @@ class FirecrawlApp(APIApplication):
269
269
  def check_crawl_status(self, job_id: str) -> dict[str, Any] | str:
270
270
  """
271
271
  Retrieves the status of an asynchronous Firecrawl job using its unique ID. As the counterpart to `start_crawl`, this function exclusively monitors website crawl progress, distinct from status checkers for batch scraping or data extraction jobs. Returns job details on success or an error message on failure.
272
-
272
+
273
273
  Args:
274
274
  job_id: The ID of the crawl job to check.
275
-
275
+
276
276
  Returns:
277
277
  A dictionary containing the job status details on success,
278
278
  or a string containing an error message on failure.
279
-
279
+
280
280
  Raises:
281
281
  NotAuthorizedError: If API key is missing or invalid.
282
282
  ToolError: If the Firecrawl SDK is not installed.
283
-
283
+
284
284
  Tags:
285
285
  crawl, async_job, status
286
286
  """
@@ -304,19 +304,19 @@ class FirecrawlApp(APIApplication):
304
304
  def cancel_crawl(self, job_id: str) -> dict[str, Any] | str:
305
305
  """
306
306
  Cancels a running asynchronous Firecrawl crawl job using its unique ID. As a lifecycle management tool for jobs initiated by `start_crawl`, it returns a confirmation status upon success or an error message on failure, distinguishing it from controls for other job types.
307
-
307
+
308
308
  Args:
309
309
  job_id: The ID of the crawl job to cancel.
310
-
310
+
311
311
  Returns:
312
312
  A dictionary confirming the cancellation status on success,
313
313
  or a string containing an error message on failure.
314
314
  (Note: This functionality might depend on Firecrawl API capabilities)
315
-
315
+
316
316
  Raises:
317
317
  NotAuthorizedError: If API key is missing or invalid.
318
318
  ToolError: If the Firecrawl SDK is not installed or operation not supported.
319
-
319
+
320
320
  Tags:
321
321
  crawl, async_job, management, cancel
322
322
  """
@@ -343,18 +343,18 @@ class FirecrawlApp(APIApplication):
343
343
  ) -> dict[str, Any] | str:
344
344
  """
345
345
  Initiates an asynchronous Firecrawl job to scrape a list of URLs. It returns a job ID for tracking with `check_batch_scrape_status`. Unlike the synchronous `scrape_url` which processes a single URL, this function handles bulk scraping and doesn't wait for completion.
346
-
346
+
347
347
  Args:
348
348
  urls: A list of URLs to scrape.
349
-
349
+
350
350
  Returns:
351
351
  A dictionary containing the job initiation response (e.g., a batch job ID or list of results/job IDs) on success,
352
352
  or a string containing an error message on failure.
353
-
353
+
354
354
  Raises:
355
355
  NotAuthorizedError: If API key is missing or invalid.
356
356
  ToolError: If the Firecrawl SDK is not installed.
357
-
357
+
358
358
  Tags:
359
359
  scrape, batch, async_job, start
360
360
  """
@@ -378,18 +378,18 @@ class FirecrawlApp(APIApplication):
378
378
  def check_batch_scrape_status(self, job_id: str) -> dict[str, Any] | str:
379
379
  """
380
380
  Checks the status of an asynchronous batch scrape job using its job ID. As the counterpart to `start_batch_scrape`, it specifically monitors multi-URL scraping tasks, distinct from checkers for site-wide crawls (`check_crawl_status`) or AI-driven extractions (`check_extract_status`). Returns detailed progress or an error message.
381
-
381
+
382
382
  Args:
383
383
  job_id: The ID of the batch scrape job to check.
384
-
384
+
385
385
  Returns:
386
386
  A dictionary containing the job status details on success,
387
387
  or a string containing an error message on failure.
388
-
388
+
389
389
  Raises:
390
390
  NotAuthorizedError: If API key is missing or invalid.
391
391
  ToolError: If the Firecrawl SDK is not installed or operation not supported.
392
-
392
+
393
393
  Tags:
394
394
  scrape, batch, async_job, status
395
395
  """
@@ -422,21 +422,21 @@ class FirecrawlApp(APIApplication):
422
422
  ) -> dict[str, Any]:
423
423
  """
424
424
  Performs synchronous, AI-driven data extraction from URLs using an optional prompt or schema. Unlike asynchronous jobs like `start_crawl`, it returns structured data directly. This function raises an exception on failure, contrasting with other methods in the class that return an error string upon failure.
425
-
425
+
426
426
  Args:
427
427
  urls: A list of URLs to extract data from.
428
428
  prompt: Optional custom extraction prompt describing what data to extract.
429
429
  schema: Optional JSON schema or Pydantic model for the desired output structure.
430
430
  system_prompt: Optional system context for the extraction.
431
431
  allow_external_links: Optional boolean to allow following external links.
432
-
432
+
433
433
  Returns:
434
434
  A dictionary containing the extracted data on success.
435
-
435
+
436
436
  Raises:
437
437
  NotAuthorizedError: If API key is missing or invalid.
438
438
  ToolError: If the Firecrawl SDK is not installed or extraction fails.
439
-
439
+
440
440
  Tags:
441
441
  extract, ai, sync, quick, important
442
442
  """
@@ -477,18 +477,18 @@ class FirecrawlApp(APIApplication):
477
477
  def check_extract_status(self, job_id: str) -> dict[str, Any] | str:
478
478
  """
479
479
  Checks the status of an asynchronous, AI-powered Firecrawl data extraction job using its ID. Unlike `check_crawl_status` or `check_batch_scrape_status`, this function specifically monitors structured data extraction tasks, returning the job's progress or an error message on failure.
480
-
480
+
481
481
  Args:
482
482
  job_id: The ID of the extraction job to check.
483
-
483
+
484
484
  Returns:
485
485
  A dictionary containing the job status details on success,
486
486
  or a string containing an error message on failure.
487
-
487
+
488
488
  Raises:
489
489
  NotAuthorizedError: If API key is missing or invalid.
490
490
  ToolError: If the Firecrawl SDK is not installed or operation not supported.
491
-
491
+
492
492
  Tags:
493
493
  extract, ai, async_job, status
494
494
  """
@@ -2,7 +2,6 @@ from collections.abc import Callable
2
2
  from typing import Any
3
3
 
4
4
  from gql import gql
5
-
6
5
  from universal_mcp.applications.application import (
7
6
  GraphQLApplication,
8
7
  )
@@ -25,18 +24,18 @@ class FirefliesApp(GraphQLApplication):
25
24
  ) -> dict[str, Any]:
26
25
  """
27
26
  Queries the Fireflies.ai API for team conversation analytics, specifically the average number of filler words. The data retrieval can optionally be filtered by a start and end time. Returns a dictionary containing the fetched analytics.
28
-
27
+
29
28
  Args:
30
29
  start_time: Optional start time for analytics (ISO 8601 format, e.g., "2024-01-01T00:00:00Z").
31
30
  end_time: Optional end time for analytics (ISO 8601 format, e.g., "2024-01-31T23:59:59Z").
32
-
31
+
33
32
  Returns:
34
33
  A dictionary containing team analytics data.
35
34
  Example: {"team": {"conversation": {"average_filler_words": 0.5}}}
36
-
35
+
37
36
  Raises:
38
37
  Exception: If the API request fails.
39
-
38
+
40
39
  Tags:
41
40
  analytics, team, fireflies, query
42
41
  """
@@ -63,17 +62,17 @@ class FirefliesApp(GraphQLApplication):
63
62
  def get_transcript_ai_outputs(self, transcript_id: str) -> list[dict[str, Any]]:
64
63
  """
65
64
  Retrieves all AI-generated application outputs, such as summaries or analyses, associated with a specific transcript ID. It fetches the detailed prompt and response data for each AI app that has processed the transcript, providing a complete record of AI-generated content.
66
-
65
+
67
66
  Args:
68
67
  transcript_id: The ID of the transcript.
69
-
68
+
70
69
  Returns:
71
70
  A list of dictionaries, each representing an AI app output.
72
71
  Example: [{"transcript_id": "...", "user_id": "...", ...}]
73
-
72
+
74
73
  Raises:
75
74
  Exception: If the API request fails.
76
-
75
+
77
76
  Tags:
78
77
  ai, apps, transcript, fireflies, query
79
78
  """
@@ -99,17 +98,17 @@ class FirefliesApp(GraphQLApplication):
99
98
  def get_user_details(self, user_id: str) -> dict[str, Any]:
100
99
  """
101
100
  Fetches details, such as name and integrations, for a single user identified by their unique ID. This function queries for a specific user, differentiating it from `list_users` which retrieves a list of all users in the workspace.
102
-
101
+
103
102
  Args:
104
103
  user_id: The ID of the user.
105
-
104
+
106
105
  Returns:
107
106
  A dictionary containing user details (e.g., name, integrations).
108
107
  Example: {"name": "John Doe", "integrations": [...]}
109
-
108
+
110
109
  Raises:
111
110
  Exception: If the API request fails.
112
-
111
+
113
112
  Tags:
114
113
  user, details, fireflies, query, important
115
114
  """
@@ -128,14 +127,14 @@ class FirefliesApp(GraphQLApplication):
128
127
  def list_users(self) -> list[dict[str, Any]]:
129
128
  """
130
129
  Retrieves a list of all users in the workspace, returning each user's name and configured integrations. It provides a complete team roster, differing from `get_user_details`, which fetches information for a single user by their ID.
131
-
130
+
132
131
  Returns:
133
132
  A list of dictionaries, each representing a user with their name and integrations.
134
133
  Example: [{"name": "Justin Fly", "integrations": ["zoom", "slack"]}, ...]
135
-
134
+
136
135
  Raises:
137
136
  Exception: If the API request fails.
138
-
137
+
139
138
  Tags:
140
139
  user, list, users, fireflies, query
141
140
  """
@@ -158,17 +157,17 @@ class FirefliesApp(GraphQLApplication):
158
157
  def get_transcript_details(self, transcript_id: str) -> dict[str, Any]:
159
158
  """
160
159
  Queries the Fireflies API for a single transcript's details, such as title and ID, using its unique identifier. It fetches one specific entry, distinguishing it from `list_transcripts`, which retrieves a collection, and from `get_ai_apps_outputs` which gets AI data from a transcript.
161
-
160
+
162
161
  Args:
163
162
  transcript_id: The ID of the transcript.
164
-
163
+
165
164
  Returns:
166
165
  A dictionary containing transcript details (e.g., title, id).
167
166
  Example: {"title": "Meeting Notes", "id": "..."}
168
-
167
+
169
168
  Raises:
170
169
  Exception: If the API request fails.
171
-
170
+
172
171
  Tags:
173
172
  transcript, details, fireflies, query, important
174
173
  """
@@ -295,17 +294,17 @@ class FirefliesApp(GraphQLApplication):
295
294
  def list_transcripts(self, user_id: str | None = None) -> list[dict[str, Any]]:
296
295
  """
297
296
  Fetches a list of meeting transcripts, returning the title and ID for each. The list can be filtered to return only transcripts for a specific user. This function complements `get_transcript_details`, which retrieves a single transcript by its unique ID.
298
-
297
+
299
298
  Args:
300
299
  user_id: Optional ID of the user to filter transcripts for.
301
-
300
+
302
301
  Returns:
303
302
  A list of dictionaries, each representing a transcript (e.g., title, id).
304
303
  Example: [{"title": "Meeting 1", "id": "..."}, {"title": "Meeting 2", "id": "..."}]
305
-
304
+
306
305
  Raises:
307
306
  Exception: If the API request fails.
308
-
307
+
309
308
  Tags:
310
309
  transcript, list, fireflies, query
311
310
  """
@@ -326,17 +325,17 @@ class FirefliesApp(GraphQLApplication):
326
325
  def get_bite_details(self, bite_id: str) -> dict[str, Any]:
327
326
  """
328
327
  Retrieves detailed information for a specific bite (soundbite/clip) using its unique ID. It fetches data including the user ID, name, processing status, and summary. This provides a focused view of a single bite, distinguishing it from `list_bites` which fetches a collection of bites.
329
-
328
+
330
329
  Args:
331
330
  bite_id: The ID of the bite.
332
-
331
+
333
332
  Returns:
334
333
  A dictionary containing bite details (e.g., user_id, name, status, summary).
335
334
  Example: {"user_id": "...", "name": "Key Moment", "status": "processed", "summary": "..."}
336
-
335
+
337
336
  Raises:
338
337
  Exception: If the API request fails.
339
-
338
+
340
339
  Tags:
341
340
  bite, details, fireflies, query
342
341
  """
@@ -357,17 +356,17 @@ class FirefliesApp(GraphQLApplication):
357
356
  def list_bites(self, mine: bool | None = None) -> list[dict[str, Any]]:
358
357
  """
359
358
  Retrieves a list of soundbites (clips) from the Fireflies API. An optional 'mine' parameter filters for soundbites belonging only to the authenticated user. Differentiates from 'get_bite_details' by fetching multiple items rather than a single one by ID.
360
-
359
+
361
360
  Args:
362
361
  mine: Optional boolean to filter for the authenticated user's bites (default true if not specified by API).
363
-
362
+
364
363
  Returns:
365
364
  A list of dictionaries, each representing a bite (e.g., user_id, name, end_time).
366
365
  Example: [{"user_id": "...", "name": "Clip 1", "end_time": "..."}]
367
-
366
+
368
367
  Raises:
369
368
  Exception: If the API request fails.
370
-
369
+
371
370
  Tags:
372
371
  bite, list, fireflies, query
373
372
  """
@@ -391,17 +390,17 @@ class FirefliesApp(GraphQLApplication):
391
390
  def add_to_live_meeting(self, meeting_link: str) -> dict[str, Any]:
392
391
  """
393
392
  Executes a GraphQL mutation to make the Fireflies.ai notetaker join a live meeting specified by its URL. This action initiates the bot's recording and transcription process for the ongoing session and returns a success confirmation.
394
-
393
+
395
394
  Args:
396
395
  meeting_link: The URL of the live meeting (e.g., Google Meet link).
397
-
396
+
398
397
  Returns:
399
398
  A dictionary indicating the success of the operation.
400
399
  Example: {"success": true}
401
-
400
+
402
401
  Raises:
403
402
  Exception: If the API request fails.
404
-
403
+
405
404
  Tags:
406
405
  meeting, live, fireflies, mutation, important
407
406
  """
@@ -421,19 +420,19 @@ class FirefliesApp(GraphQLApplication):
421
420
  ) -> dict[str, Any]:
422
421
  """
423
422
  Creates a soundbite/clip from a specified segment of a transcript using its ID, start, and end times. This function executes a GraphQL mutation, returning details of the newly created bite, such as its ID and processing status.
424
-
423
+
425
424
  Args:
426
425
  transcript_id: The ID of the transcript.
427
426
  start_time: The start time of the bite in seconds (or relevant float unit).
428
427
  end_time: The end time of the bite in seconds (or relevant float unit).
429
-
428
+
430
429
  Returns:
431
430
  A dictionary containing details of the created bite (e.g., summary, status, id).
432
431
  Example: {"summary": "...", "status": "processing", "id": "..."}
433
-
432
+
434
433
  Raises:
435
434
  Exception: If the API request fails.
436
-
435
+
437
436
  Tags:
438
437
  bite, create, transcript, fireflies, mutation
439
438
  """
@@ -457,17 +456,17 @@ class FirefliesApp(GraphQLApplication):
457
456
  def delete_transcript(self, transcript_id: str) -> dict[str, Any]:
458
457
  """
459
458
  Permanently deletes a specific transcript from Fireflies.ai using its ID. This destructive operation executes a GraphQL mutation and returns a dictionary containing the details of the transcript (e.g., title, date) as it existed just before being removed, confirming the action.
460
-
459
+
461
460
  Args:
462
461
  transcript_id: The ID of the transcript to delete.
463
-
462
+
464
463
  Returns:
465
464
  A dictionary containing details of the deleted transcript.
466
465
  Example: {"title": "Old Meeting", "date": "...", "duration": ..., "organizer_email": "..."}
467
-
466
+
468
467
  Raises:
469
468
  Exception: If the API request fails.
470
-
469
+
471
470
  Tags:
472
471
  transcript, delete, fireflies, mutation, destructive
473
472
  """
@@ -488,18 +487,18 @@ class FirefliesApp(GraphQLApplication):
488
487
  def set_user_role(self, user_id: str, role: str) -> dict[str, Any]:
489
488
  """
490
489
  Assigns a new role (e.g., 'admin', 'member') to a user specified by their ID. This function executes a GraphQL mutation to modify user data and returns a dictionary with the user's updated name and admin status to confirm the change.
491
-
490
+
492
491
  Args:
493
492
  user_id: The ID of the user.
494
493
  role: The role to assign (e.g., "admin", "member").
495
-
494
+
496
495
  Returns:
497
496
  A dictionary containing the updated user details (e.g., name, is_admin).
498
497
  Example: {"name": "Jane Doe", "is_admin": true}
499
-
498
+
500
499
  Raises:
501
500
  Exception: If the API request fails.
502
-
501
+
503
502
  Tags:
504
503
  user, role, admin, fireflies, mutation
505
504
  """
@@ -523,20 +522,20 @@ class FirefliesApp(GraphQLApplication):
523
522
  ) -> dict[str, Any]:
524
523
  """
525
524
  Submits an audio file from a URL to the Fireflies.ai API for transcription. It can optionally associate a title and a list of attendees with the audio, returning the upload status and details upon completion.
526
-
525
+
527
526
  Args:
528
527
  url: The URL of the audio file.
529
528
  title: Optional title for the uploaded audio.
530
529
  attendees: Optional list of attendees. Each attendee is a dict
531
530
  with "displayName", "email", "phoneNumber".
532
-
531
+
533
532
  Returns:
534
533
  A dictionary indicating the success and details of the upload.
535
534
  Example: {"success": true, "title": "Uploaded Audio", "message": "..."}
536
-
535
+
537
536
  Raises:
538
537
  Exception: If the API request fails.
539
-
538
+
540
539
  Tags:
541
540
  audio, upload, transcript, fireflies, mutation
542
541
  """
@@ -564,18 +563,18 @@ class FirefliesApp(GraphQLApplication):
564
563
  ) -> dict[str, Any]:
565
564
  """
566
565
  Updates the title of a specific transcript, identified by its ID, to a new value. This function executes a GraphQL mutation and returns a dictionary containing the newly assigned title upon successful completion of the request.
567
-
566
+
568
567
  Args:
569
568
  transcript_id: The ID of the transcript to update.
570
569
  new_title: The new title for the meeting.
571
-
570
+
572
571
  Returns:
573
572
  A dictionary containing the updated title.
574
573
  Example: {"title": "New Meeting Title"}
575
-
574
+
576
575
  Raises:
577
576
  Exception: If the API request fails.
578
-
577
+
579
578
  Tags:
580
579
  transcript, meeting, title, update, fireflies, mutation
581
580
  """