universal-mcp-applications 0.1.12__py3-none-any.whl → 0.1.14__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/aws_s3/app.py +71 -71
- universal_mcp/applications/calendly/app.py +199 -199
- universal_mcp/applications/canva/app.py +189 -189
- universal_mcp/applications/domain_checker/app.py +31 -24
- universal_mcp/applications/e2b/app.py +6 -7
- universal_mcp/applications/elevenlabs/app.py +24 -20
- universal_mcp/applications/exa/app.py +25 -20
- universal_mcp/applications/falai/app.py +44 -41
- universal_mcp/applications/file_system/app.py +20 -12
- universal_mcp/applications/firecrawl/app.py +46 -47
- universal_mcp/applications/fireflies/app.py +79 -79
- universal_mcp/applications/fpl/app.py +83 -74
- universal_mcp/applications/github/README.md +0 -1028
- universal_mcp/applications/github/app.py +55 -50227
- universal_mcp/applications/google_calendar/app.py +63 -65
- universal_mcp/applications/google_docs/app.py +78 -78
- universal_mcp/applications/google_drive/app.py +361 -440
- universal_mcp/applications/google_gemini/app.py +34 -17
- universal_mcp/applications/google_mail/app.py +164 -118
- universal_mcp/applications/google_searchconsole/app.py +41 -47
- universal_mcp/applications/google_sheet/app.py +157 -164
- universal_mcp/applications/http_tools/app.py +16 -16
- universal_mcp/applications/linkedin/app.py +26 -31
- universal_mcp/applications/ms_teams/app.py +190 -190
- universal_mcp/applications/openai/app.py +55 -56
- universal_mcp/applications/outlook/app.py +57 -57
- universal_mcp/applications/perplexity/app.py +17 -17
- universal_mcp/applications/reddit/app.py +225 -4053
- universal_mcp/applications/replicate/app.py +40 -42
- universal_mcp/applications/resend/app.py +157 -154
- universal_mcp/applications/scraper/app.py +24 -24
- universal_mcp/applications/serpapi/app.py +18 -20
- universal_mcp/applications/sharepoint/app.py +46 -36
- universal_mcp/applications/slack/app.py +66 -66
- universal_mcp/applications/tavily/app.py +7 -7
- universal_mcp/applications/twitter/api_segments/compliance_api.py +17 -20
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +35 -40
- universal_mcp/applications/twitter/api_segments/dm_events_api.py +18 -21
- universal_mcp/applications/twitter/api_segments/likes_api.py +19 -22
- universal_mcp/applications/twitter/api_segments/lists_api.py +59 -68
- universal_mcp/applications/twitter/api_segments/spaces_api.py +36 -42
- universal_mcp/applications/twitter/api_segments/trends_api.py +7 -8
- universal_mcp/applications/twitter/api_segments/tweets_api.py +159 -185
- universal_mcp/applications/twitter/api_segments/usage_api.py +5 -6
- universal_mcp/applications/twitter/api_segments/users_api.py +230 -264
- universal_mcp/applications/unipile/app.py +99 -105
- universal_mcp/applications/whatsapp/app.py +86 -82
- universal_mcp/applications/whatsapp_business/app.py +147 -147
- universal_mcp/applications/youtube/app.py +290 -290
- universal_mcp/applications/zenquotes/app.py +6 -6
- {universal_mcp_applications-0.1.12.dist-info → universal_mcp_applications-0.1.14.dist-info}/METADATA +2 -2
- {universal_mcp_applications-0.1.12.dist-info → universal_mcp_applications-0.1.14.dist-info}/RECORD +54 -54
- {universal_mcp_applications-0.1.12.dist-info → universal_mcp_applications-0.1.14.dist-info}/WHEEL +0 -0
- {universal_mcp_applications-0.1.12.dist-info → universal_mcp_applications-0.1.14.dist-info}/licenses/LICENSE +0 -0
|
@@ -13,6 +13,9 @@ class ResendApp(APIApplication):
|
|
|
13
13
|
|
|
14
14
|
@property
|
|
15
15
|
def api_key(self) -> str:
|
|
16
|
+
"""
|
|
17
|
+
A property that lazily retrieves, validates, and caches the Resend API key from integration credentials. On first access, it configures the `resend` library, raising an error if authentication fails. This ensures the application is authenticated for all subsequent API calls within the class.
|
|
18
|
+
"""
|
|
16
19
|
if self._api_key is None:
|
|
17
20
|
if not self.integration:
|
|
18
21
|
raise NotAuthorizedError("Resend integration not configured.")
|
|
@@ -36,20 +39,20 @@ class ResendApp(APIApplication):
|
|
|
36
39
|
text: str,
|
|
37
40
|
) -> dict[str, Any]:
|
|
38
41
|
"""
|
|
39
|
-
Sends
|
|
40
|
-
|
|
42
|
+
Sends a single email with a specified subject and text body to a list of recipients via the Resend API. Unlike `send_batch_emails`, which processes multiple distinct emails at once, this function is designed for dispatching one individual email composition per API call.
|
|
43
|
+
|
|
41
44
|
Args:
|
|
42
45
|
from_email: The email address to send the email from in this format:- Ankit <ankit@agentr.dev>
|
|
43
46
|
to_emails: A list of email addresses to send the email to.
|
|
44
47
|
subject: The subject of the email.
|
|
45
48
|
text: The text content of the email.
|
|
46
|
-
|
|
49
|
+
|
|
47
50
|
Returns:
|
|
48
51
|
A dictionary containing the response from the Resend API.
|
|
49
|
-
|
|
52
|
+
|
|
50
53
|
Raises:
|
|
51
54
|
ToolError: If the email fails to send due to an API error.
|
|
52
|
-
|
|
55
|
+
|
|
53
56
|
Tags:
|
|
54
57
|
send, email, api, communication, important
|
|
55
58
|
"""
|
|
@@ -71,17 +74,17 @@ class ResendApp(APIApplication):
|
|
|
71
74
|
emails: list[dict[str, Any]],
|
|
72
75
|
) -> dict[str, Any]:
|
|
73
76
|
"""
|
|
74
|
-
Sends a
|
|
75
|
-
|
|
77
|
+
Sends multiple emails (1-100) in a single API request. Unlike the `send_email` function which handles a single message, this accepts a list of email objects for efficient, high-volume delivery. It validates that the batch size is within the allowed limits before making the API call.
|
|
78
|
+
|
|
76
79
|
Args:
|
|
77
80
|
emails: A list of dictionaries containing parameters for individual emails, such as `from`, `to`, `subject`, `html`, and `text`.
|
|
78
|
-
|
|
81
|
+
|
|
79
82
|
Returns:
|
|
80
83
|
A dictionary containing the response from the Resend API.
|
|
81
|
-
|
|
84
|
+
|
|
82
85
|
Raises:
|
|
83
86
|
ToolError: If the batch email sending fails or if the number of emails is not between 1 and 100.
|
|
84
|
-
|
|
87
|
+
|
|
85
88
|
Tags:
|
|
86
89
|
batch, send, emails, resend-api
|
|
87
90
|
"""
|
|
@@ -97,19 +100,19 @@ class ResendApp(APIApplication):
|
|
|
97
100
|
except Exception as e:
|
|
98
101
|
raise ToolError(f"Failed to send batch emails: {e}")
|
|
99
102
|
|
|
100
|
-
def
|
|
103
|
+
def retrieve_email_by_id(self, email_id: str) -> dict[str, Any]:
|
|
101
104
|
"""
|
|
102
|
-
Retrieves a single email
|
|
103
|
-
|
|
105
|
+
Retrieves the details and status of a single email from the Resend API using its unique identifier. This function allows for looking up a specific email that has already been sent or scheduled, distinct from functions that initiate sending.
|
|
106
|
+
|
|
104
107
|
Args:
|
|
105
108
|
email_id: The unique identifier of the email to retrieve.
|
|
106
|
-
|
|
109
|
+
|
|
107
110
|
Returns:
|
|
108
111
|
A dictionary containing the details of the retrieved email.
|
|
109
|
-
|
|
112
|
+
|
|
110
113
|
Raises:
|
|
111
114
|
ToolError: Raised if the retrieval of the email fails due to an internal error.
|
|
112
|
-
|
|
115
|
+
|
|
113
116
|
Tags:
|
|
114
117
|
retrieve, email, management
|
|
115
118
|
"""
|
|
@@ -120,22 +123,22 @@ class ResendApp(APIApplication):
|
|
|
120
123
|
except Exception as e:
|
|
121
124
|
raise ToolError(f"Failed to retrieve email: {e}")
|
|
122
125
|
|
|
123
|
-
def
|
|
126
|
+
def reschedule_email(
|
|
124
127
|
self, email_id: str, scheduled_at: str
|
|
125
128
|
) -> dict[str, Any]:
|
|
126
129
|
"""
|
|
127
|
-
|
|
128
|
-
|
|
130
|
+
Modifies the delivery time for a specific, previously scheduled email using its ID. It updates the `scheduled_at` attribute to a new ISO 8601 formatted time, effectively rescheduling its dispatch. This differs from `cancel_scheduled_email`, which permanently stops the send.
|
|
131
|
+
|
|
129
132
|
Args:
|
|
130
133
|
email_id: The ID of the email to update.
|
|
131
134
|
scheduled_at: The new scheduled time in ISO 8601 format.
|
|
132
|
-
|
|
135
|
+
|
|
133
136
|
Returns:
|
|
134
137
|
A dictionary containing the response from the Resend API.
|
|
135
|
-
|
|
138
|
+
|
|
136
139
|
Raises:
|
|
137
140
|
ToolError: If updating the scheduled email fails.
|
|
138
|
-
|
|
141
|
+
|
|
139
142
|
Tags:
|
|
140
143
|
update, email, async_job, management
|
|
141
144
|
"""
|
|
@@ -152,17 +155,17 @@ class ResendApp(APIApplication):
|
|
|
152
155
|
|
|
153
156
|
def cancel_scheduled_email(self, email_id: str) -> dict[str, Any]:
|
|
154
157
|
"""
|
|
155
|
-
Cancels a scheduled email using the
|
|
156
|
-
|
|
158
|
+
Cancels a previously scheduled email using its unique ID, preventing it from being sent. This function calls the Resend API's cancellation endpoint, returning a confirmation response. It is distinct from `update_scheduled_email`, which reschedules the email instead of stopping its transmission.
|
|
159
|
+
|
|
157
160
|
Args:
|
|
158
161
|
email_id: The ID of the scheduled email to cancel.
|
|
159
|
-
|
|
162
|
+
|
|
160
163
|
Returns:
|
|
161
164
|
A dictionary containing the response from the Resend API.
|
|
162
|
-
|
|
165
|
+
|
|
163
166
|
Raises:
|
|
164
167
|
ToolError: If canceling the scheduled email fails.
|
|
165
|
-
|
|
168
|
+
|
|
166
169
|
Tags:
|
|
167
170
|
cancel, email, management
|
|
168
171
|
"""
|
|
@@ -175,17 +178,17 @@ class ResendApp(APIApplication):
|
|
|
175
178
|
|
|
176
179
|
def create_domain(self, name: str) -> dict[str, Any]:
|
|
177
180
|
"""
|
|
178
|
-
|
|
179
|
-
|
|
181
|
+
Registers a new sending domain with the Resend service using the provided name. This is a prerequisite for sending emails from your own domain and returns a dictionary containing details of the new domain object, which can then be verified and managed with other domain-related functions.
|
|
182
|
+
|
|
180
183
|
Args:
|
|
181
184
|
name: The name of the domain to create (e.g., 'example.com')
|
|
182
|
-
|
|
185
|
+
|
|
183
186
|
Returns:
|
|
184
187
|
A dictionary containing the created domain object and its details.
|
|
185
|
-
|
|
188
|
+
|
|
186
189
|
Raises:
|
|
187
190
|
ToolError: If the domain creation fails due to API errors or invalid input.
|
|
188
|
-
|
|
191
|
+
|
|
189
192
|
Tags:
|
|
190
193
|
create, domain, management, api, batch, important
|
|
191
194
|
"""
|
|
@@ -199,17 +202,17 @@ class ResendApp(APIApplication):
|
|
|
199
202
|
|
|
200
203
|
def get_domain(self, domain_id: str) -> dict[str, Any]:
|
|
201
204
|
"""
|
|
202
|
-
Retrieves a
|
|
203
|
-
|
|
205
|
+
Retrieves the details of a specific domain from the Resend API using its unique ID. Unlike `list_domains`, which fetches all domains, this function targets a single record and returns a dictionary containing the domain's properties, like its verification status and tracking settings.
|
|
206
|
+
|
|
204
207
|
Args:
|
|
205
208
|
domain_id: The ID of the domain to retrieve.
|
|
206
|
-
|
|
209
|
+
|
|
207
210
|
Returns:
|
|
208
211
|
A dictionary containing the domain object.
|
|
209
|
-
|
|
212
|
+
|
|
210
213
|
Raises:
|
|
211
214
|
ToolError: Raised if the domain retrieval fails.
|
|
212
|
-
|
|
215
|
+
|
|
213
216
|
Tags:
|
|
214
217
|
retrieve, domain, management
|
|
215
218
|
"""
|
|
@@ -222,17 +225,17 @@ class ResendApp(APIApplication):
|
|
|
222
225
|
|
|
223
226
|
def verify_domain(self, domain_id: str) -> dict[str, Any]:
|
|
224
227
|
"""
|
|
225
|
-
|
|
226
|
-
|
|
228
|
+
Triggers the verification process for a registered domain using its unique ID. This action is crucial for authorizing the domain to send emails via Resend and returns an API response containing the verification status and necessary DNS records to complete the process.
|
|
229
|
+
|
|
227
230
|
Args:
|
|
228
231
|
domain_id: The ID of the domain to verify.
|
|
229
|
-
|
|
232
|
+
|
|
230
233
|
Returns:
|
|
231
234
|
A dictionary containing the response from the domain verification API.
|
|
232
|
-
|
|
235
|
+
|
|
233
236
|
Raises:
|
|
234
237
|
ToolError: If the domain verification process fails.
|
|
235
|
-
|
|
238
|
+
|
|
236
239
|
Tags:
|
|
237
240
|
verify, domain
|
|
238
241
|
"""
|
|
@@ -243,7 +246,7 @@ class ResendApp(APIApplication):
|
|
|
243
246
|
except Exception as e:
|
|
244
247
|
raise ToolError(f"Failed to verify domain: {e}")
|
|
245
248
|
|
|
246
|
-
def
|
|
249
|
+
def update_domain_settings(
|
|
247
250
|
self,
|
|
248
251
|
domain_id: str,
|
|
249
252
|
open_tracking: bool | None = None,
|
|
@@ -251,20 +254,20 @@ class ResendApp(APIApplication):
|
|
|
251
254
|
tls: str | None = None,
|
|
252
255
|
) -> dict[str, Any]:
|
|
253
256
|
"""
|
|
254
|
-
Updates
|
|
255
|
-
|
|
257
|
+
Updates settings for a specific domain identified by its ID. This function can modify configurations like open and click tracking, and TLS enforcement. It returns the updated domain object from the API, raising a ToolError if the update fails. Only the provided settings are modified.
|
|
258
|
+
|
|
256
259
|
Args:
|
|
257
260
|
domain_id: The ID of the domain to update.
|
|
258
261
|
open_tracking: Enable or disable open tracking.
|
|
259
262
|
click_tracking: Enable or disable click tracking.
|
|
260
263
|
tls: The TLS enforcement policy (enforced or opportunistic).
|
|
261
|
-
|
|
264
|
+
|
|
262
265
|
Returns:
|
|
263
266
|
A dictionary containing the updated domain object.
|
|
264
|
-
|
|
267
|
+
|
|
265
268
|
Raises:
|
|
266
269
|
ToolError: Raised if updating the domain fails.
|
|
267
|
-
|
|
270
|
+
|
|
268
271
|
Tags:
|
|
269
272
|
update, domain, management
|
|
270
273
|
"""
|
|
@@ -284,14 +287,14 @@ class ResendApp(APIApplication):
|
|
|
284
287
|
|
|
285
288
|
def list_domains(self) -> list[dict[str, Any]]:
|
|
286
289
|
"""
|
|
287
|
-
|
|
288
|
-
|
|
290
|
+
Fetches a complete list of all domains registered with the Resend account. Unlike `get_domain`, which retrieves a single domain by ID, this provides a comprehensive overview of all configured domains for management and verification tasks.
|
|
291
|
+
|
|
289
292
|
Returns:
|
|
290
293
|
A list of dictionaries, each representing a domain.
|
|
291
|
-
|
|
294
|
+
|
|
292
295
|
Raises:
|
|
293
296
|
ToolError: If listing the domains fails.
|
|
294
|
-
|
|
297
|
+
|
|
295
298
|
Tags:
|
|
296
299
|
list, domains, important, management
|
|
297
300
|
"""
|
|
@@ -304,17 +307,17 @@ class ResendApp(APIApplication):
|
|
|
304
307
|
|
|
305
308
|
def remove_domain(self, domain_id: str) -> dict[str, Any]:
|
|
306
309
|
"""
|
|
307
|
-
|
|
308
|
-
|
|
310
|
+
Permanently removes a specific domain from the Resend account using its unique ID. This function makes an authenticated API call to delete the domain, distinguishing it from retrieval (`get_domain`) or modification (`update_domain`) operations, and raises an error if the process fails.
|
|
311
|
+
|
|
309
312
|
Args:
|
|
310
313
|
domain_id: The unique identifier of the domain to be removed.
|
|
311
|
-
|
|
314
|
+
|
|
312
315
|
Returns:
|
|
313
316
|
A dictionary containing the response from the Resend API after attempting to remove the domain.
|
|
314
|
-
|
|
317
|
+
|
|
315
318
|
Raises:
|
|
316
319
|
ToolError: Raised if the operation to remove the domain fails, including if the API call encounters an error.
|
|
317
|
-
|
|
320
|
+
|
|
318
321
|
Tags:
|
|
319
322
|
remove, management, api, domain
|
|
320
323
|
"""
|
|
@@ -327,17 +330,17 @@ class ResendApp(APIApplication):
|
|
|
327
330
|
|
|
328
331
|
def create_api_key(self, name: str) -> dict[str, Any]:
|
|
329
332
|
"""
|
|
330
|
-
Creates a new API key for authenticating with Resend.
|
|
331
|
-
|
|
333
|
+
Creates a new API key for authenticating with the Resend service, identified by a specified name. It returns a dictionary containing the new key object, including the generated token required for subsequent API requests.
|
|
334
|
+
|
|
332
335
|
Args:
|
|
333
336
|
name: The name of the API key (e.g., 'Production').
|
|
334
|
-
|
|
337
|
+
|
|
335
338
|
Returns:
|
|
336
339
|
A dictionary containing the new API key object.
|
|
337
|
-
|
|
340
|
+
|
|
338
341
|
Raises:
|
|
339
342
|
ToolError: Raised if API key creation fails.
|
|
340
|
-
|
|
343
|
+
|
|
341
344
|
Tags:
|
|
342
345
|
create, api-key, authentication
|
|
343
346
|
"""
|
|
@@ -351,17 +354,17 @@ class ResendApp(APIApplication):
|
|
|
351
354
|
|
|
352
355
|
def list_api_keys(self) -> list[dict[str, Any]]:
|
|
353
356
|
"""
|
|
354
|
-
Retrieves a list of all API keys
|
|
355
|
-
|
|
357
|
+
Retrieves a list of all API keys for the authenticated Resend account. This read-only operation allows for auditing and viewing existing credentials, contrasting with `create_api_key` and `remove_api_key` which are used to add or delete keys.
|
|
358
|
+
|
|
356
359
|
Args:
|
|
357
360
|
None: This function takes no arguments.
|
|
358
|
-
|
|
361
|
+
|
|
359
362
|
Returns:
|
|
360
363
|
List of dictionaries, each representing an API key with associated details.
|
|
361
|
-
|
|
364
|
+
|
|
362
365
|
Raises:
|
|
363
366
|
ToolError: If there is a failure when attempting to list the API keys, typically due to an underlying exception from the resend API.
|
|
364
|
-
|
|
367
|
+
|
|
365
368
|
Tags:
|
|
366
369
|
list, api, important
|
|
367
370
|
"""
|
|
@@ -374,17 +377,17 @@ class ResendApp(APIApplication):
|
|
|
374
377
|
|
|
375
378
|
def remove_api_key(self, api_key_id: str) -> dict[str, Any]:
|
|
376
379
|
"""
|
|
377
|
-
|
|
378
|
-
|
|
380
|
+
Deletes a specific Resend API key identified by its unique ID. This function, part of the key management suite alongside `create_api_key` and `list_api_keys`, returns an API confirmation response or raises a `ToolError` if the operation fails.
|
|
381
|
+
|
|
379
382
|
Args:
|
|
380
383
|
api_key_id: The ID of the API key to remove.
|
|
381
|
-
|
|
384
|
+
|
|
382
385
|
Returns:
|
|
383
386
|
A dictionary containing the response from the Resend API after removing the API key.
|
|
384
|
-
|
|
387
|
+
|
|
385
388
|
Raises:
|
|
386
389
|
ToolError: Raised if removing the API key fails, including any underlying errors.
|
|
387
|
-
|
|
390
|
+
|
|
388
391
|
Tags:
|
|
389
392
|
remove, api-key, management
|
|
390
393
|
"""
|
|
@@ -395,7 +398,7 @@ class ResendApp(APIApplication):
|
|
|
395
398
|
except Exception as e:
|
|
396
399
|
raise ToolError(f"Failed to remove API key: {e}")
|
|
397
400
|
|
|
398
|
-
def
|
|
401
|
+
def register_broadcast(
|
|
399
402
|
self,
|
|
400
403
|
audience_id: str,
|
|
401
404
|
from_email: str,
|
|
@@ -403,20 +406,20 @@ class ResendApp(APIApplication):
|
|
|
403
406
|
html: str,
|
|
404
407
|
) -> dict[str, Any]:
|
|
405
408
|
"""
|
|
406
|
-
|
|
407
|
-
|
|
409
|
+
Registers a new email broadcast campaign for a specific audience using the Resend API. This function creates the broadcast object but does not send it; use the `send_broadcast` function to dispatch the created campaign to the audience.
|
|
410
|
+
|
|
408
411
|
Args:
|
|
409
412
|
audience_id: The ID of the audience to send the broadcast to.
|
|
410
413
|
from_email: The sender's email address.
|
|
411
414
|
subject: The subject line of the broadcast.
|
|
412
415
|
html: The HTML content of the broadcast. Use {{{...}}} for merge tags.
|
|
413
|
-
|
|
416
|
+
|
|
414
417
|
Returns:
|
|
415
418
|
A dictionary containing the created broadcast object.
|
|
416
|
-
|
|
419
|
+
|
|
417
420
|
Raises:
|
|
418
421
|
ToolError: Raised if creating the broadcast fails due to an underlying exception.
|
|
419
|
-
|
|
422
|
+
|
|
420
423
|
Tags:
|
|
421
424
|
broadcast, email, important
|
|
422
425
|
"""
|
|
@@ -435,17 +438,17 @@ class ResendApp(APIApplication):
|
|
|
435
438
|
|
|
436
439
|
def get_broadcast(self, broadcast_id: str) -> dict[str, Any]:
|
|
437
440
|
"""
|
|
438
|
-
Retrieves a
|
|
439
|
-
|
|
441
|
+
Retrieves a specific broadcast's complete details, including its status and content, by its unique ID. Unlike `list_broadcasts` which retrieves all broadcasts, this function targets a single entry for inspection.
|
|
442
|
+
|
|
440
443
|
Args:
|
|
441
444
|
broadcast_id: The ID of the broadcast to retrieve.
|
|
442
|
-
|
|
445
|
+
|
|
443
446
|
Returns:
|
|
444
447
|
A dictionary containing the broadcast object.
|
|
445
|
-
|
|
448
|
+
|
|
446
449
|
Raises:
|
|
447
450
|
ToolError: Raised if retrieving the broadcast fails.
|
|
448
|
-
|
|
451
|
+
|
|
449
452
|
Tags:
|
|
450
453
|
retrieve, broadcast
|
|
451
454
|
"""
|
|
@@ -463,19 +466,19 @@ class ResendApp(APIApplication):
|
|
|
463
466
|
subject: str | None = None,
|
|
464
467
|
) -> dict[str, Any]:
|
|
465
468
|
"""
|
|
466
|
-
Updates
|
|
467
|
-
|
|
469
|
+
Updates the HTML content and/or subject of an existing broadcast, identified by its ID. Requires that at least one modifiable field (html or subject) is provided. This function alters a broadcast's content, differing from `send_broadcast` which triggers its delivery.
|
|
470
|
+
|
|
468
471
|
Args:
|
|
469
472
|
broadcast_id: The ID of the broadcast to update.
|
|
470
473
|
html: The new HTML content for the broadcast.
|
|
471
474
|
subject: The new subject line for the broadcast.
|
|
472
|
-
|
|
475
|
+
|
|
473
476
|
Returns:
|
|
474
477
|
A dictionary containing the updated broadcast object.
|
|
475
|
-
|
|
478
|
+
|
|
476
479
|
Raises:
|
|
477
480
|
ToolError: Raised if updating the broadcast fails or no update fields are provided.
|
|
478
|
-
|
|
481
|
+
|
|
479
482
|
Tags:
|
|
480
483
|
update, management, broadcast, api
|
|
481
484
|
"""
|
|
@@ -495,22 +498,22 @@ class ResendApp(APIApplication):
|
|
|
495
498
|
except Exception as e:
|
|
496
499
|
raise ToolError(f"Failed to update broadcast: {e}")
|
|
497
500
|
|
|
498
|
-
def
|
|
501
|
+
def send_or_schedule_broadcast(
|
|
499
502
|
self, broadcast_id: str, scheduled_at: str | None = None
|
|
500
503
|
) -> dict[str, Any]:
|
|
501
504
|
"""
|
|
502
|
-
|
|
503
|
-
|
|
505
|
+
Initiates the delivery of a pre-existing broadcast, identified by its ID, to its target audience. The broadcast can be sent immediately or scheduled for a future time via the optional `scheduled_at` parameter. It returns the API response upon execution.
|
|
506
|
+
|
|
504
507
|
Args:
|
|
505
508
|
broadcast_id: The ID of the broadcast to send.
|
|
506
509
|
scheduled_at: The time to send the broadcast, e.g., 'in 1 min' or an ISO 8601 datetime.
|
|
507
|
-
|
|
510
|
+
|
|
508
511
|
Returns:
|
|
509
512
|
A dictionary containing the response from the Resend API.
|
|
510
|
-
|
|
513
|
+
|
|
511
514
|
Raises:
|
|
512
515
|
ToolError: If sending the broadcast fails.
|
|
513
|
-
|
|
516
|
+
|
|
514
517
|
Tags:
|
|
515
518
|
broadcast, send, api, management
|
|
516
519
|
"""
|
|
@@ -524,19 +527,19 @@ class ResendApp(APIApplication):
|
|
|
524
527
|
except Exception as e:
|
|
525
528
|
raise ToolError(f"Failed to send broadcast: {e}")
|
|
526
529
|
|
|
527
|
-
def
|
|
530
|
+
def remove_draft_broadcast(self, broadcast_id: str) -> dict[str, Any]:
|
|
528
531
|
"""
|
|
529
|
-
|
|
530
|
-
|
|
532
|
+
Deletes a broadcast from the Resend service using its unique ID. This action is restricted to broadcasts that have a 'draft' status and have not been sent, returning the API's response upon successful removal or raising an error if the operation fails.
|
|
533
|
+
|
|
531
534
|
Args:
|
|
532
535
|
broadcast_id: The ID of the broadcast to remove.
|
|
533
|
-
|
|
536
|
+
|
|
534
537
|
Returns:
|
|
535
538
|
A dictionary containing the response from the Resend API.
|
|
536
|
-
|
|
539
|
+
|
|
537
540
|
Raises:
|
|
538
541
|
ToolError: If removing the broadcast fails.
|
|
539
|
-
|
|
542
|
+
|
|
540
543
|
Tags:
|
|
541
544
|
remove, broadcast, api-management, draft-status
|
|
542
545
|
"""
|
|
@@ -549,14 +552,14 @@ class ResendApp(APIApplication):
|
|
|
549
552
|
|
|
550
553
|
def list_broadcasts(self) -> list[dict[str, Any]]:
|
|
551
554
|
"""
|
|
552
|
-
Retrieves a list of all
|
|
553
|
-
|
|
555
|
+
Retrieves a list of all broadcasts associated with the authenticated account. Unlike `get_broadcast` which fetches a single item by ID, this function returns a list of dictionaries, each containing the attributes of a specific broadcast. Raises a `ToolError` on API failure.
|
|
556
|
+
|
|
554
557
|
Returns:
|
|
555
558
|
A list of dictionaries, each representing a broadcast with its attributes.
|
|
556
|
-
|
|
559
|
+
|
|
557
560
|
Raises:
|
|
558
561
|
ToolError: If listing broadcasts fails due to a connection, API, or other retrieval error.
|
|
559
|
-
|
|
562
|
+
|
|
560
563
|
Tags:
|
|
561
564
|
list, broadcast, api, management, important
|
|
562
565
|
"""
|
|
@@ -569,17 +572,17 @@ class ResendApp(APIApplication):
|
|
|
569
572
|
|
|
570
573
|
def create_audience(self, name: str) -> dict[str, Any]:
|
|
571
574
|
"""
|
|
572
|
-
Creates a new audience
|
|
573
|
-
|
|
575
|
+
Creates a new audience, a named list for contacts, within the Resend service. This function requires a name for the audience and returns a dictionary representing the newly created object, enabling subsequent management of contacts within that specific list.
|
|
576
|
+
|
|
574
577
|
Args:
|
|
575
578
|
name: The name of the audience (e.g., "Registered Users").
|
|
576
|
-
|
|
579
|
+
|
|
577
580
|
Returns:
|
|
578
581
|
A dictionary containing the created audience object.
|
|
579
|
-
|
|
582
|
+
|
|
580
583
|
Raises:
|
|
581
584
|
ToolError: If creating the audience fails due to an underlying error.
|
|
582
|
-
|
|
585
|
+
|
|
583
586
|
Tags:
|
|
584
587
|
create, audience, management, important
|
|
585
588
|
"""
|
|
@@ -593,17 +596,17 @@ class ResendApp(APIApplication):
|
|
|
593
596
|
|
|
594
597
|
def get_audience(self, audience_id: str) -> dict[str, Any]:
|
|
595
598
|
"""
|
|
596
|
-
Retrieves a single audience
|
|
597
|
-
|
|
599
|
+
Retrieves the details of a single audience using its unique ID. This provides a targeted lookup for one audience, distinct from `list_audiences` which fetches all available audiences in the account.
|
|
600
|
+
|
|
598
601
|
Args:
|
|
599
602
|
audience_id: The unique identifier of the audience to retrieve.
|
|
600
|
-
|
|
603
|
+
|
|
601
604
|
Returns:
|
|
602
605
|
A dictionary containing all data for the requested audience object.
|
|
603
|
-
|
|
606
|
+
|
|
604
607
|
Raises:
|
|
605
608
|
ToolError: If retrieving the audience from the API fails, with a message describing the error.
|
|
606
|
-
|
|
609
|
+
|
|
607
610
|
Tags:
|
|
608
611
|
fetch, audience, management, api
|
|
609
612
|
"""
|
|
@@ -616,17 +619,17 @@ class ResendApp(APIApplication):
|
|
|
616
619
|
|
|
617
620
|
def remove_audience(self, audience_id: str) -> dict[str, Any]:
|
|
618
621
|
"""
|
|
619
|
-
|
|
620
|
-
|
|
622
|
+
Deletes a specific audience from the Resend service using its unique identifier. This function wraps the Resend API's remove operation, returning the API's response. Unlike `remove_contact`, which targets individuals, this function removes the entire contact list defined by the audience ID.
|
|
623
|
+
|
|
621
624
|
Args:
|
|
622
625
|
audience_id: The unique identifier of the audience to remove.
|
|
623
|
-
|
|
626
|
+
|
|
624
627
|
Returns:
|
|
625
628
|
A dictionary containing the response from the Resend API.
|
|
626
|
-
|
|
629
|
+
|
|
627
630
|
Raises:
|
|
628
631
|
ToolError: Raised if removing the audience fails due to API error or other issues.
|
|
629
|
-
|
|
632
|
+
|
|
630
633
|
Tags:
|
|
631
634
|
remove, audience, management, api
|
|
632
635
|
"""
|
|
@@ -639,14 +642,14 @@ class ResendApp(APIApplication):
|
|
|
639
642
|
|
|
640
643
|
def list_audiences(self) -> list[dict[str, Any]]:
|
|
641
644
|
"""
|
|
642
|
-
Retrieves a list of all audiences.
|
|
643
|
-
|
|
645
|
+
Retrieves a complete list of all audiences from the Resend account. It returns a list of dictionaries, with each containing the details of a specific audience. This function is distinct from `get_audience`, which fetches a single audience by its ID.
|
|
646
|
+
|
|
644
647
|
Returns:
|
|
645
648
|
A list of dictionaries, each representing an audience.
|
|
646
|
-
|
|
649
|
+
|
|
647
650
|
Raises:
|
|
648
651
|
ToolError: Raised if listing the audiences fails due to an internal error.
|
|
649
|
-
|
|
652
|
+
|
|
650
653
|
Tags:
|
|
651
654
|
list, audiences, management, important
|
|
652
655
|
"""
|
|
@@ -666,21 +669,21 @@ class ResendApp(APIApplication):
|
|
|
666
669
|
unsubscribed: bool = False,
|
|
667
670
|
) -> dict[str, Any]:
|
|
668
671
|
"""
|
|
669
|
-
Creates a contact
|
|
670
|
-
|
|
672
|
+
Creates a new contact with a given email, optional name, and subscription status, adding it to a specific audience. This function populates audience lists, differing from `update_contact` which modifies existing entries, and requires a valid `audience_id` to function.
|
|
673
|
+
|
|
671
674
|
Args:
|
|
672
675
|
audience_id: The ID of the audience to add the contact to.
|
|
673
676
|
email: The email address of the contact.
|
|
674
677
|
first_name: The contact's first name.
|
|
675
678
|
last_name: The contact's last name.
|
|
676
679
|
unsubscribed: The contact's subscription status.
|
|
677
|
-
|
|
680
|
+
|
|
678
681
|
Returns:
|
|
679
682
|
A dictionary containing the created contact's ID.
|
|
680
|
-
|
|
683
|
+
|
|
681
684
|
Raises:
|
|
682
685
|
ToolError: Raised if creating the contact fails.
|
|
683
|
-
|
|
686
|
+
|
|
684
687
|
Tags:
|
|
685
688
|
create, contact, management, important
|
|
686
689
|
"""
|
|
@@ -704,19 +707,19 @@ class ResendApp(APIApplication):
|
|
|
704
707
|
self, audience_id: str, contact_id: str | None = None, email: str | None = None
|
|
705
708
|
) -> dict[str, Any]:
|
|
706
709
|
"""
|
|
707
|
-
|
|
708
|
-
|
|
710
|
+
Fetches a single contact's details from a specified audience by its unique ID or email address. The function requires exactly one identifier for the lookup, raising an error if the identifier is missing, ambiguous, or if the API call fails.
|
|
711
|
+
|
|
709
712
|
Args:
|
|
710
713
|
audience_id: The ID of the audience in which to search for the contact.
|
|
711
714
|
contact_id: The unique ID of the contact, if available. Exactly one of 'contact_id' or 'email' must be provided.
|
|
712
715
|
email: The email address of the contact, if available. Exactly one of 'contact_id' or 'email' must be provided.
|
|
713
|
-
|
|
716
|
+
|
|
714
717
|
Returns:
|
|
715
718
|
A dictionary containing the retrieved contact object, with details such as ID, email, and other contact attributes.
|
|
716
|
-
|
|
719
|
+
|
|
717
720
|
Raises:
|
|
718
721
|
ToolError: Raised if neither 'contact_id' nor 'email' is provided, if both are provided (ambiguous identifier), or if retrieval from the API fails.
|
|
719
|
-
|
|
722
|
+
|
|
720
723
|
Tags:
|
|
721
724
|
retrieve, contact, audience, management, api
|
|
722
725
|
"""
|
|
@@ -744,8 +747,8 @@ class ResendApp(APIApplication):
|
|
|
744
747
|
unsubscribed: bool | None = None,
|
|
745
748
|
) -> dict[str, Any]:
|
|
746
749
|
"""
|
|
747
|
-
Updates an existing contact, identified by ID or email,
|
|
748
|
-
|
|
750
|
+
Updates an existing contact's details (e.g., name, subscription status) within a specific audience. The contact is identified by its unique ID or email address. This function validates inputs and returns the Resend API response, raising a ToolError on failure or if arguments are invalid.
|
|
751
|
+
|
|
749
752
|
Args:
|
|
750
753
|
audience_id: The ID of the audience containing the contact.
|
|
751
754
|
contact_id: The ID of the contact to update.
|
|
@@ -753,13 +756,13 @@ class ResendApp(APIApplication):
|
|
|
753
756
|
first_name: The new first name for the contact.
|
|
754
757
|
last_name: The new last name for the contact.
|
|
755
758
|
unsubscribed: The new subscription status for the contact.
|
|
756
|
-
|
|
759
|
+
|
|
757
760
|
Returns:
|
|
758
761
|
A dictionary containing the response from the Resend API.
|
|
759
|
-
|
|
762
|
+
|
|
760
763
|
Raises:
|
|
761
764
|
ToolError: Raised if the update fails, if an identifier is missing, or if no update fields are provided.
|
|
762
|
-
|
|
765
|
+
|
|
763
766
|
Tags:
|
|
764
767
|
update, contact, management
|
|
765
768
|
"""
|
|
@@ -793,19 +796,19 @@ class ResendApp(APIApplication):
|
|
|
793
796
|
self, audience_id: str, contact_id: str | None = None, email: str | None = None
|
|
794
797
|
) -> dict[str, Any]:
|
|
795
798
|
"""
|
|
796
|
-
Removes a contact from
|
|
797
|
-
|
|
799
|
+
Removes a contact from a specified audience. The contact must be identified by either its unique ID or email address, but not both. Raises an error if the identifier is missing, ambiguous, or if the API call to the Resend service fails.
|
|
800
|
+
|
|
798
801
|
Args:
|
|
799
802
|
audience_id: The ID of the audience.
|
|
800
803
|
contact_id: The ID of the contact to remove.
|
|
801
804
|
email: The email of the contact to remove.
|
|
802
|
-
|
|
805
|
+
|
|
803
806
|
Returns:
|
|
804
807
|
A dictionary containing the response from the Resend API.
|
|
805
|
-
|
|
808
|
+
|
|
806
809
|
Raises:
|
|
807
810
|
ToolError: If contact removal fails, or if the contact identifier is missing or ambiguous.
|
|
808
|
-
|
|
811
|
+
|
|
809
812
|
Tags:
|
|
810
813
|
remove, contact-management, api-call
|
|
811
814
|
"""
|
|
@@ -825,17 +828,17 @@ class ResendApp(APIApplication):
|
|
|
825
828
|
|
|
826
829
|
def list_contacts(self, audience_id: str) -> list[dict[str, Any]]:
|
|
827
830
|
"""
|
|
828
|
-
|
|
829
|
-
|
|
831
|
+
Retrieves a complete list of contacts belonging to a specific audience, identified by its unique ID. This function returns all contacts within the audience, unlike `get_contact` which retrieves only a single contact by its ID or email.
|
|
832
|
+
|
|
830
833
|
Args:
|
|
831
834
|
audience_id: The ID of the audience whose contacts you want to list.
|
|
832
|
-
|
|
835
|
+
|
|
833
836
|
Returns:
|
|
834
837
|
A list of dictionaries, each representing a contact in the audience.
|
|
835
|
-
|
|
838
|
+
|
|
836
839
|
Raises:
|
|
837
840
|
ToolError: Raised if listing the contacts fails.
|
|
838
|
-
|
|
841
|
+
|
|
839
842
|
Tags:
|
|
840
843
|
list, contacts, management, important
|
|
841
844
|
"""
|
|
@@ -850,23 +853,23 @@ class ResendApp(APIApplication):
|
|
|
850
853
|
return [
|
|
851
854
|
self.send_email,
|
|
852
855
|
self.send_batch_emails,
|
|
853
|
-
self.
|
|
854
|
-
self.
|
|
856
|
+
self.retrieve_email_by_id,
|
|
857
|
+
self.reschedule_email,
|
|
855
858
|
self.cancel_scheduled_email,
|
|
856
859
|
self.create_domain,
|
|
857
860
|
self.get_domain,
|
|
858
861
|
self.verify_domain,
|
|
859
|
-
self.
|
|
862
|
+
self.update_domain_settings,
|
|
860
863
|
self.list_domains,
|
|
861
864
|
self.remove_domain,
|
|
862
865
|
self.create_api_key,
|
|
863
866
|
self.list_api_keys,
|
|
864
867
|
self.remove_api_key,
|
|
865
|
-
self.
|
|
868
|
+
self.register_broadcast,
|
|
866
869
|
self.get_broadcast,
|
|
867
870
|
self.update_broadcast,
|
|
868
|
-
self.
|
|
869
|
-
self.
|
|
871
|
+
self.send_or_schedule_broadcast,
|
|
872
|
+
self.remove_draft_broadcast,
|
|
870
873
|
self.list_broadcasts,
|
|
871
874
|
self.create_audience,
|
|
872
875
|
self.get_audience,
|