universal-mcp-applications 0.1.5__py3-none-any.whl → 0.1.7__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.

@@ -4526,6 +4526,7 @@ class RedditApp(APIApplication):
4526
4526
 
4527
4527
  def list_tools(self):
4528
4528
  return [
4529
+ # Manually defined, high-level tools for common Reddit interactions
4529
4530
  self.get_subreddit_posts,
4530
4531
  self.search_subreddits,
4531
4532
  self.get_post_flairs,
@@ -4534,120 +4535,130 @@ class RedditApp(APIApplication):
4534
4535
  self.post_comment,
4535
4536
  self.edit_content,
4536
4537
  self.delete_content,
4537
- # Auto Generated from openapi spec
4538
+ self.get_post_comments_details,
4539
+
4540
+ # Useful tools for fetching user information
4538
4541
  self.api_v1_me,
4539
4542
  self.api_v1_me_karma,
4540
- self.api_v1_me_prefs,
4541
- self.api_v1_me_prefs1,
4542
- self.api_v1_me_trophies,
4543
- self.prefs_friends,
4544
- self.prefs_blocked,
4545
- self.prefs_messaging,
4546
- self.prefs_trusted,
4547
- self.api_needs_captcha,
4548
- self.api_v1_collections_collection,
4549
- self.api_v1_collections_subreddit_collections,
4550
- self.api_v1_subreddit_emoji_emoji_name,
4551
- self.api_v1_subreddit_emojis_all,
4552
- self.r_subreddit_api_flair,
4553
- self.r_subreddit_api_flairlist,
4554
- self.r_subreddit_api_link_flair,
4555
- self.r_subreddit_api_link_flair_v2,
4556
- self.r_subreddit_api_user_flair,
4557
- self.r_subreddit_api_user_flair_v2,
4558
- self.api_info,
4559
- self.r_subreddit_api_info,
4560
- self.api_morechildren,
4561
- self.api_saved_categories,
4562
- self.req,
4563
- self.best,
4564
- self.by_id_names,
4565
- self.comments_article,
4566
- self.controversial,
4567
- self.duplicates_article,
4543
+ self.user_username_about,
4544
+
4545
+ # Core listing tools for browsing posts
4568
4546
  self.hot,
4569
4547
  self.new,
4570
- self.r_subreddit_comments_article,
4571
- self.r_subreddit_controversial,
4548
+ self.top,
4549
+ self.rising,
4550
+ self.controversial,
4551
+
4552
+ # Subreddit-specific listing tools
4572
4553
  self.r_subreddit_hot,
4573
4554
  self.r_subreddit_new,
4574
- self.r_subreddit_random,
4575
- self.r_subreddit_rising,
4576
4555
  self.r_subreddit_top,
4577
- self.random,
4578
- self.rising,
4579
- self.top,
4580
- self.api_saved_media_text,
4581
- self.api_v1_scopes,
4582
- self.r_subreddit_api_saved_media_text,
4583
- self.r_subreddit_about_log,
4584
- self.r_subreddit_about_edited,
4585
- self.r_subreddit_about_modqueue,
4586
- self.r_subreddit_about_reports,
4587
- self.r_subreddit_about_spam,
4588
- self.r_subreddit_about_unmoderated,
4589
- self.r_subreddit_stylesheet,
4590
- self.stylesheet,
4591
- self.api_mod_notes1,
4592
- self.api_mod_notes,
4593
- self.api_mod_notes_recent,
4594
- self.api_multi_mine,
4595
- self.api_multi_user_username,
4596
- self.api_multi_multipath1,
4597
- self.api_multi_multipath,
4598
- self.api_multi_multipath_description,
4599
- self.api_multi_multipath_rsubreddit1,
4600
- self.api_multi_multipath_rsubreddit,
4601
- self.api_mod_conversations,
4602
- self.api_mod_conversations_conversation_id,
4603
- self.api_mod_conversations_conversation_id_highlight,
4604
- self.api_mod_conversations_conversation_id_unarchive,
4605
- self.api_mod_conversations_conversation_id_unban,
4606
- self.api_mod_conversations_conversation_id_unmute,
4607
- self.api_mod_conversations_conversation_id_user,
4608
- self.api_mod_conversations_subreddits,
4609
- self.api_mod_conversations_unread_count,
4610
- self.message_inbox,
4611
- self.message_sent,
4612
- self.message_unread,
4556
+
4557
+ # A general-purpose search tool
4613
4558
  self.search,
4614
- self.r_subreddit_search,
4615
- self.api_search_reddit_names,
4616
- self.api_subreddit_autocomplete,
4617
- self.api_subreddit_autocomplete_v2,
4618
- self.api_v1_subreddit_post_requirements,
4619
- self.r_subreddit_about_banned,
4620
- self.r_subreddit_about,
4621
- self.r_subreddit_about_edit,
4622
- self.r_subreddit_about_contributors,
4623
- self.r_subreddit_about_moderators,
4624
- self.r_subreddit_about_muted,
4625
- self.r_subreddit_about_rules,
4626
- self.r_subreddit_about_sticky,
4627
- self.r_subreddit_about_traffic,
4628
- self.r_subreddit_about_wikibanned,
4629
- self.r_subreddit_about_wikicontributors,
4630
- self.r_subreddit_api_submit_text,
4631
- self.subreddits_mine_where,
4632
- self.subreddits_search,
4633
- self.subreddits_where,
4634
- self.api_user_data_by_account_ids,
4635
- self.api_username_available,
4636
- self.api_v1_me_friends_username1,
4637
- self.api_v1_me_friends_username,
4638
- self.api_v1_user_username_trophies,
4639
- self.user_username_about,
4640
- self.user_username_where,
4641
- self.users_search,
4642
- self.users_where,
4643
- self.r_subreddit_api_widgets,
4644
- self.r_subreddit_api_widget_order_section,
4645
- self.r_subreddit_api_widget_widget_id,
4646
- self.r_subreddit_wiki_discussions_page,
4647
- self.r_subreddit_wiki_page,
4648
- self.r_subreddit_wiki_pages,
4649
- self.r_subreddit_wiki_revisions,
4650
- self.r_subreddit_wiki_revisions_page,
4651
- self.r_subreddit_wiki_settings_page,
4652
- self.get_post_comments_details,
4653
- ]
4559
+
4560
+ # --- The following tools are more granular or niche and have been commented out ---
4561
+
4562
+ # self.api_v1_me_prefs,
4563
+ # self.api_v1_me_prefs1,
4564
+ # self.api_v1_me_trophies,
4565
+ # self.prefs_friends,
4566
+ # self.prefs_blocked,
4567
+ # self.prefs_messaging,
4568
+ # self.prefs_trusted,
4569
+ # self.api_needs_captcha,
4570
+ # self.api_v1_collections_collection,
4571
+ # self.api_v1_collections_subreddit_collections,
4572
+ # self.api_v1_subreddit_emoji_emoji_name,
4573
+ # self.api_v1_subreddit_emojis_all,
4574
+ # self.r_subreddit_api_flair,
4575
+ # self.r_subreddit_api_flairlist,
4576
+ # self.r_subreddit_api_link_flair,
4577
+ # self.r_subreddit_api_link_flair_v2,
4578
+ # self.r_subreddit_api_user_flair,
4579
+ # self.r_subreddit_api_user_flair_v2,
4580
+ # self.api_info,
4581
+ # self.r_subreddit_api_info,
4582
+ # self.api_morechildren,
4583
+ # self.api_saved_categories,
4584
+ # self.req,
4585
+ # self.best,
4586
+ # self.by_id_names,
4587
+ # self.comments_article,
4588
+ # self.duplicates_article,
4589
+ # self.r_subreddit_comments_article,
4590
+ # self.r_subreddit_controversial,
4591
+ # self.r_subreddit_random,
4592
+ # self.r_subreddit_rising,
4593
+ # self.random,
4594
+ # self.api_saved_media_text,
4595
+ # self.api_v1_scopes,
4596
+ # self.r_subreddit_api_saved_media_text,
4597
+ # self.r_subreddit_about_log,
4598
+ # self.r_subreddit_about_edited,
4599
+ # self.r_subreddit_about_modqueue,
4600
+ # self.r_subreddit_about_reports,
4601
+ # self.r_subreddit_about_spam,
4602
+ # self.r_subreddit_about_unmoderated,
4603
+ # self.r_subreddit_stylesheet,
4604
+ # self.stylesheet,
4605
+ # self.api_mod_notes1,
4606
+ # self.api_mod_notes,
4607
+ # self.api_mod_notes_recent,
4608
+ # self.api_multi_mine,
4609
+ # self.api_multi_user_username,
4610
+ # self.api_multi_multipath1,
4611
+ # self.api_multi_multipath,
4612
+ # self.api_multi_multipath_description,
4613
+ # self.api_multi_multipath_rsubreddit1,
4614
+ # self.api_multi_multipath_rsubreddit,
4615
+ # self.api_mod_conversations,
4616
+ # self.api_mod_conversations_conversation_id,
4617
+ # self.api_mod_conversations_conversation_id_highlight,
4618
+ # self.api_mod_conversations_conversation_id_unarchive,
4619
+ # self.api_mod_conversations_conversation_id_unban,
4620
+ # self.api_mod_conversations_conversation_id_unmute,
4621
+ # self.api_mod_conversations_conversation_id_user,
4622
+ # self.api_mod_conversations_subreddits,
4623
+ # self.api_mod_conversations_unread_count,
4624
+ # self.message_inbox,
4625
+ # self.message_sent,
4626
+ # self.message_unread,
4627
+ # self.r_subreddit_search,
4628
+ # self.api_search_reddit_names,
4629
+ # self.api_subreddit_autocomplete,
4630
+ # self.api_subreddit_autocomplete_v2,
4631
+ # self.api_v1_subreddit_post_requirements,
4632
+ # self.r_subreddit_about_banned,
4633
+ # self.r_subreddit_about,
4634
+ # self.r_subreddit_about_edit,
4635
+ # self.r_subreddit_about_contributors,
4636
+ # self.r_subreddit_about_moderators,
4637
+ # self.r_subreddit_about_muted,
4638
+ # self.r_subreddit_about_rules,
4639
+ # self.r_subreddit_about_sticky,
4640
+ # self.r_subreddit_about_traffic,
4641
+ # self.r_subreddit_about_wikibanned,
4642
+ # self.r_subreddit_about_wikicontributors,
4643
+ # self.r_subreddit_api_submit_text,
4644
+ # self.subreddits_mine_where,
4645
+ # self.subreddits_search,
4646
+ # self.subreddits_where,
4647
+ # self.api_user_data_by_account_ids,
4648
+ # self.api_username_available,
4649
+ # self.api_v1_me_friends_username1,
4650
+ # self.api_v1_me_friends_username,
4651
+ # self.api_v1_user_username_trophies,
4652
+ # self.user_username_where,
4653
+ # self.users_search,
4654
+ # self.users_where,
4655
+ # self.r_subreddit_api_widgets,
4656
+ # self.r_subreddit_api_widget_order_section,
4657
+ # self.r_subreddit_api_widget_widget_id,
4658
+ # self.r_subreddit_wiki_discussions_page,
4659
+ # self.r_subreddit_wiki_page,
4660
+ # self.r_subreddit_wiki_pages,
4661
+ # self.r_subreddit_wiki_revisions,
4662
+ # self.r_subreddit_wiki_revisions_page,
4663
+ # self.r_subreddit_wiki_settings_page,
4664
+ ]
@@ -5,9 +5,8 @@ load_dotenv()
5
5
  from typing import Any
6
6
 
7
7
  from universal_mcp.applications.application import APIApplication
8
- from universal_mcp.integrations import Integration
9
8
  from universal_mcp.agentr.integration import AgentrIntegration
10
- from universal_mcp_unipile.app import UnipileApp
9
+ from universal_mcp.applications.unipile import UnipileApp
11
10
  from typing import Any, Optional
12
11
 
13
12
  class ScraperApp(APIApplication):
@@ -26,14 +25,14 @@ class ScraperApp(APIApplication):
26
25
  for LinkedIn API access.
27
26
  """
28
27
  super().__init__(name="scraper", **kwargs)
29
- self.api_key = os.getenv("SCRAPER_API")
30
- self.account_id = os.getenv("ACCOUNT_ID")
31
-
32
- if self.api_key:
33
- self.integration = AgentrIntegration(name="unipile", api_key=self.api_key, base_url="https://api.agentr.dev")
28
+ if self.integration:
29
+ credentials = self.integration.get_credentials()
30
+ api_key = credentials.get("SCRAPER_API")
31
+ self.account_id = credentials.get("ACCOUNT_ID")
32
+ self.integration = AgentrIntegration(name="unipile", api_key=api_key, base_url="https://staging-agentr-306776579029.asia-southeast1.run.app/")
34
33
  self._unipile_app = UnipileApp(integration=self.integration)
35
34
  else:
36
- self.integration = None
35
+ self.account_id = None
37
36
  self._unipile_app = None
38
37
 
39
38
  def linkedin_post_search(
@@ -54,10 +54,24 @@ class WhatsappApp(BaseApplication):
54
54
  def __init__(self, integration: AgentrIntegration | None = None, **kwargs) -> None:
55
55
  super().__init__(name="whatsapp", integration=integration, **kwargs)
56
56
  self.base_url = WHATSAPP_API_BASE_URL
57
- self._api_key: str = integration.client.api_key if integration else None
57
+ self.integration = integration
58
+ self._api_key: str | None = None
58
59
 
59
60
  def get_api_key(self) -> str:
60
- return self._api_key
61
+ """Get the AgentR API key to use as for WhatsApp authentication."""
62
+ if not self.integration:
63
+ raise ValueError("No integration available to get API key from")
64
+
65
+
66
+ try:
67
+ headers = self.integration.client.client.headers
68
+ api_key = headers.get('X-API-KEY')
69
+ if api_key:
70
+ return api_key
71
+ else:
72
+ raise ValueError("X-API-KEY not found in AgentR client headers")
73
+ except AttributeError as e:
74
+ raise ValueError(f"Could not access AgentR client headers: {e}") from e
61
75
 
62
76
  @property
63
77
  def api_key(self) -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: universal-mcp-applications
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: A Universal MCP Application: universal_mcp_applications
5
5
  Project-URL: Homepage, https://github.com/universal-mcp/applications
6
6
  Project-URL: Repository, https://github.com/universal-mcp/applications
@@ -34,7 +34,6 @@ Requires-Dist: replicate>=1.0.6
34
34
  Requires-Dist: requests>=2.31.0
35
35
  Requires-Dist: resend>=2.10.0
36
36
  Requires-Dist: twilio>=9.8.0
37
- Requires-Dist: universal-mcp-unipile>=0.1.13
38
37
  Requires-Dist: universal-mcp>=0.1.24rc17
39
38
  Provides-Extra: dev
40
39
  Requires-Dist: pre-commit; extra == 'dev'
@@ -91,7 +91,7 @@ universal_mcp/applications/ghost_content/__init__.py,sha256=FZpzgPwkJU54Y-7XfrR7
91
91
  universal_mcp/applications/ghost_content/app.py,sha256=pZGrKNkWi1F9UTETKc76HL-Z_UgsOIw6k6remDJIwwM,24235
92
92
  universal_mcp/applications/github/README.md,sha256=YDmFUHREGjOgKGUF4L8Dxodt93OrJKGMlGHO2JA5T7o,153607
93
93
  universal_mcp/applications/github/__init__.py,sha256=3_T202KYSp3Wq9bV9spJBK1lf0NFPyGGoCsGSL_x8vk,27
94
- universal_mcp/applications/github/app.py,sha256=Qyiw0fbkddbme3OSLR8mWmUwxtWDOj2BTjm1cd7oGEw,1958085
94
+ universal_mcp/applications/github/app.py,sha256=RHY5XjyOGpAIrnoDwJskAHd-0_XkXrAfo_7T7STcnJo,1960129
95
95
  universal_mcp/applications/gong/README.md,sha256=mz9W81VYPwdwbQ2_Yz9TF5oP7lfgFRkn70xNHkZV534,6383
96
96
  universal_mcp/applications/gong/__init__.py,sha256=Sev0qQ31JkJGnVwMdkV7DH6iAU8695dLxd1D2jMpcK8,25
97
97
  universal_mcp/applications/gong/app.py,sha256=WRpa8tpgj9TiJwPzP5ZH7W4fiM8F59jlDSpn2McHsC4,100495
@@ -173,7 +173,7 @@ universal_mcp/applications/posthog/__init__.py,sha256=2j8vH09Xqz51BlfNehaEvY2A2L
173
173
  universal_mcp/applications/posthog/app.py,sha256=-T0hOSxPT3qQEVG8IrRY0MVi0YI8yHHeKPgl5jRexGY,275182
174
174
  universal_mcp/applications/reddit/README.md,sha256=3krLCogha_GekeqACyIx8G_mHmOmQbcyZJn8ZUHQtjE,8594
175
175
  universal_mcp/applications/reddit/__init__.py,sha256=JHA_BMVnuQyoDMbQt5dRNxKPrAxyZZL6zzQyNbvyjHs,27
176
- universal_mcp/applications/reddit/app.py,sha256=eHNWqU9LX6BIJufsPEkef0QIeflklO09SRHnXVmp7zw,155443
176
+ universal_mcp/applications/reddit/app.py,sha256=G1V-kbr3XtDUnRapFmvs6KjbHBWlm7nXZL4UguGo1aA,156018
177
177
  universal_mcp/applications/replicate/README.md,sha256=1N9UgpeU1G_Yt6pBIFuty1ii6yJe2hLbfDJUKFPrYk0,1288
178
178
  universal_mcp/applications/replicate/__init__.py,sha256=W3thUM5OFDKregi9E4EjzrcLY4ya_ZLMQKXAF2fiYV4,30
179
179
  universal_mcp/applications/replicate/app.py,sha256=UObTGrrBGvy-_4oH8xrF_EifASIMjZv9SXIdHun2LJI,20128
@@ -188,7 +188,7 @@ universal_mcp/applications/rocketlane/__init__.py,sha256=jl3PjnTvPdjnbFXJgLywSlE
188
188
  universal_mcp/applications/rocketlane/app.py,sha256=Re5-OoUWIIxL_ZJZ_RpEqz82hymgAWtdcOSJtJFzzs0,240690
189
189
  universal_mcp/applications/scraper/README.md,sha256=ys9f2dRHGsnFkauAuGdBo3_Z_51PRn2cqGlnEv8kjPI,590
190
190
  universal_mcp/applications/scraper/__init__.py,sha256=RnkyFDeNR1tOsY_PskHdv4C8AYRbcjMt7KyYQWiGGD8,27
191
- universal_mcp/applications/scraper/app.py,sha256=9selCbdp4SqlruypHHu0ydwzmB2VNFUwy8QAMoOilAo,6422
191
+ universal_mcp/applications/scraper/app.py,sha256=CVMrERgtUritpmG2RyOMlH3iTjfBhKJwF2Lvgz51z80,6483
192
192
  universal_mcp/applications/semanticscholar/README.md,sha256=JpLY_698pvstgoNfQ5Go8C8ehQ-o68uFDX5kr86upK0,2834
193
193
  universal_mcp/applications/semanticscholar/__init__.py,sha256=eR36chrc0pbBsSE1GadvmQH0OmtKnSC91xbE7HcDPf0,36
194
194
  universal_mcp/applications/semanticscholar/app.py,sha256=OHTFkR-IwRU5Rvb1bEu7XmRHikht3hEgZxszLQu6kFI,22234
@@ -252,7 +252,7 @@ universal_mcp/applications/unipile/__init__.py,sha256=0UZVOiYo_dDXbvTmtHrZ_fgvrb
252
252
  universal_mcp/applications/unipile/app.py,sha256=1Q98eWUVrZFXqqOZrMpC-lWlPshY5b1cqPGOzG8W6no,29256
253
253
  universal_mcp/applications/whatsapp/README.md,sha256=eYXIHHpsNIhc2xBLyzStoATXnlvnOZHAxGsBoLC1vd0,1364
254
254
  universal_mcp/applications/whatsapp/__init__.py,sha256=miHfSBpu5lx226T8dMbvOw_5H6MJCWOKVK_WbqMma-8,29
255
- universal_mcp/applications/whatsapp/app.py,sha256=qNrULBT4XIm5mBGaH2-fY-rqejbBubkAJ1Gl_R8M0K4,19648
255
+ universal_mcp/applications/whatsapp/app.py,sha256=3XCERNGoqLQQO8N6a7En9eVFO4V4T_wMawvv6COOdgg,20209
256
256
  universal_mcp/applications/whatsapp/audio.py,sha256=zw6X2ADaE7xGZ4nIuSBCTRHlm7BV686MwsNEGJCDBG0,3696
257
257
  universal_mcp/applications/whatsapp/whatsapp.py,sha256=3Gj4rQDUJU7FsYnZYqPeCR3loE7RUcjalyau6beVr8w,13233
258
258
  universal_mcp/applications/whatsapp_business/README.md,sha256=2DgwhOr8ivLKMOCMZzctk9_8qdU-AoypN0xKo_2TztI,3989
@@ -267,7 +267,7 @@ universal_mcp/applications/youtube/app.py,sha256=hhKqnbXvMAyOW3LOqp-ODPdIuQorr1n
267
267
  universal_mcp/applications/zenquotes/README.md,sha256=x1mZHjNKD4WOgsIhedcbbaR1nvbt794GSrKud1tSLD0,296
268
268
  universal_mcp/applications/zenquotes/__init__.py,sha256=IkASLYaZiHJXlkGwEMk1HgIq5GwEZp5GhAIiJyjBd3g,30
269
269
  universal_mcp/applications/zenquotes/app.py,sha256=6v8trNWjxbixdlEyaM-gJbfY8z9ZAmkIzSUks_fbsT4,1076
270
- universal_mcp_applications-0.1.5.dist-info/METADATA,sha256=GYEtFJps_4QUJRJVXW2UXGsIEO2H5Wb2p4XQVyQar34,3963
271
- universal_mcp_applications-0.1.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
272
- universal_mcp_applications-0.1.5.dist-info/licenses/LICENSE,sha256=NweDZVPslBAZFzlgByF158b85GR0f5_tLQgq1NS48To,1063
273
- universal_mcp_applications-0.1.5.dist-info/RECORD,,
270
+ universal_mcp_applications-0.1.7.dist-info/METADATA,sha256=on1VtL6QMUgmV8Dd25oLZhcb68hf_1jq57OgguKrkGw,3918
271
+ universal_mcp_applications-0.1.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
272
+ universal_mcp_applications-0.1.7.dist-info/licenses/LICENSE,sha256=NweDZVPslBAZFzlgByF158b85GR0f5_tLQgq1NS48To,1063
273
+ universal_mcp_applications-0.1.7.dist-info/RECORD,,