universal-mcp-applications 0.1.27rc3__py3-none-any.whl → 0.1.28__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.

@@ -653,235 +653,42 @@ class UnipileApp(APIApplication):
653
653
  def search(
654
654
  self,
655
655
  account_id: str,
656
- category: Literal["people", "companies", "posts", "jobs"] = "posts",
657
- api: Literal["classic", "sales_navigator"] = "classic",
656
+ category: Literal["people", "companies", "posts", "jobs"],
658
657
  cursor: str | None = None,
659
658
  limit: int | None = None,
660
659
  keywords: str | None = None,
661
- sort_by: Literal["relevance", "date"] | None = None,
662
660
  date_posted: Literal["past_day", "past_week", "past_month"] | None = None,
663
- content_type: Literal[
664
- "videos", "images", "live_videos", "collaborative_articles", "documents"
665
- ]
666
- | None = None,
667
- posted_by: dict[str, Any] | None = None,
668
- mentioning: dict[str, Any] | None = None,
669
- author: dict[str, Any] | None = None,
670
- # People search specific parameters
671
- location: list[str] | None = None,
672
- industry: list[str] | None = None,
673
- company: list[str] | None = None,
674
- past_company: list[str] | None = None,
675
- school: list[str] | None = None,
676
- # Company search specific parameters
677
- headcount: list[dict[str, int]] | None = None,
678
- # Job search specific parameters
679
- job_type: list[str] | None = None,
680
- minimum_salary: dict[str, Any] | None = None,
681
- # URL search
682
- search_url: str | None = None,
661
+ sort_by: Literal["relevance", "date"] = "relevance",
662
+ minimum_salary_value: int = 40,
683
663
  ) -> dict[str, Any]:
684
664
  """
685
- Performs a comprehensive LinkedIn search for people, companies, posts, or jobs using granular filters like keywords and location. Alternatively, it can execute a search from a direct LinkedIn URL. Supports pagination and targets either the classic or Sales Navigator API.
665
+ Performs a comprehensive LinkedIn search for people, companies, posts, or jobs using keywords.
666
+ Supports pagination and targets either the classic or Sales Navigator API for posts.
667
+ For people, companies, and jobs, it uses the classic API.
686
668
 
687
669
  Args:
688
670
  account_id: The ID of the Unipile account to perform the search from (REQUIRED).
689
671
  category: Type of search to perform - "people", "companies", "posts", or "jobs".
690
- api: Which LinkedIn API to use - "classic" or "sales_navigator".
691
672
  cursor: Pagination cursor for the next page of entries.
692
673
  limit: Number of items to return (up to 50 for Classic search).
693
674
  keywords: Keywords to search for.
694
- sort_by: How to sort the results, e.g., "relevance" or "date".
695
- date_posted: Filter posts by when they were posted (posts only).
696
- content_type: Filter by the type of content in the post (posts only).
697
- posted_by: Dictionary to filter by who posted (posts only).
698
- location: Location filter for people/company search (array of strings).
699
- industry: Industry filter for people/company search (array of strings).
700
- company: Company filter for people search (array of strings).
701
- past_company: Past company filter for people search (array of strings).
702
- school: School filter for people search (array of strings).
703
- headcount: Company size filter for company search (array of objects with min/max numbers).
704
- job_type: Job type filter for job search (array of strings).
705
- minimum_salary: Minimum salary filter for job search (object with currency and value). Example:
706
- minimum_salary = {
707
- "currency": "USD",
708
- "value": 80
709
- }
710
- search_url: Direct LinkedIn search URL to use instead of building parameters.
675
+ date_posted: Filter by when the post was posted (posts only).
676
+ sort_by: How to sort the results (for posts and jobs).
677
+ minimum_salary_value: The minimum salary to filter for (jobs only).
711
678
 
712
679
  Returns:
713
680
  A dictionary containing search results and pagination details.
714
681
 
715
682
  Raises:
716
683
  httpx.HTTPError: If the API request fails.
684
+ ValueError: If the category is empty.
717
685
 
718
686
  Tags:
719
687
  linkedin, search, people, companies, posts, jobs, api, important
720
688
  """
721
- url = f"{self.base_url}/api/v1/linkedin/search"
722
-
723
- params: dict[str, Any] = {"account_id": account_id}
724
- if cursor:
725
- params["cursor"] = cursor
726
- if limit is not None:
727
- params["limit"] = limit
728
-
729
- payload: dict[str, Any] = {"api": api, "category": category}
730
-
731
- # Add search URL if provided (takes precedence over other parameters)
732
- if search_url:
733
- payload["search_url"] = search_url
734
- else:
735
- # Add common parameters
736
- common_params = {
737
- "keywords": keywords,
738
- "sort_by": sort_by,
739
- }
740
- payload.update({k: v for k, v in common_params.items() if v is not None})
741
-
742
- # Category-specific parameters
743
- category_params = {
744
- "posts": {
745
- "date_posted": date_posted,
746
- "content_type": content_type,
747
- "posted_by": posted_by,
748
- },
749
- "people": {
750
- "location": location,
751
- "industry": industry,
752
- "company": company,
753
- "past_company": past_company,
754
- "school": school,
755
- },
756
- "companies": {
757
- "location": location,
758
- "industry": industry,
759
- "headcount": headcount,
760
- },
761
- "jobs": {
762
- "location": location,
763
- "job_type": job_type,
764
- "minimum_salary": minimum_salary,
765
- },
766
- }
767
-
768
- if category in category_params:
769
- payload.update(
770
- {
771
- k: v
772
- for k, v in category_params[category].items()
773
- if v is not None
774
- }
775
- )
776
-
777
- response = self._post(url, params=params, data=payload)
778
- return self._handle_response(response)
779
-
780
- def people_search(
781
- self,
782
- account_id: str,
783
- cursor: str | None = None,
784
- limit: int | None = None,
785
- keywords: str | None = None,
786
- last_viewed_at: int | None = None,
787
- saved_search_id: str | None = None,
788
- recent_search_id: str | None = None,
789
- location: dict[str, Any] | None = None,
790
- location_by_postal_code: dict[str, Any] | None = None,
791
- industry: dict[str, Any] | None = None,
792
- first_name: str | None = None,
793
- last_name: str | None = None,
794
- tenure: list[dict[str, Any]] | None = None,
795
- groups: list[str] | None = None,
796
- school: dict[str, Any] | None = None,
797
- profile_language: list[str] | None = None,
798
- company: dict[str, Any] | None = None,
799
- company_headcount: list[dict[str, Any]] | None = None,
800
- company_type: list[str] | None = None,
801
- company_location: dict[str, Any] | None = None,
802
- tenure_at_company: list[dict[str, Any]] | None = None,
803
- past_company: dict[str, Any] | None = None,
804
- function: dict[str, Any] | None = None,
805
- role: dict[str, Any] | None = None,
806
- tenure_at_role: list[dict[str, Any]] | None = None,
807
- seniority: dict[str, Any] | None = None,
808
- past_role: dict[str, Any] | None = None,
809
- following_your_company: bool | None = None,
810
- viewed_your_profile_recently: bool | None = None,
811
- network_distance: list[str] | None = None,
812
- connections_of: list[str] | None = None,
813
- past_colleague: bool | None = None,
814
- shared_experiences: bool | None = None,
815
- changed_jobs: bool | None = None,
816
- posted_on_linkedin: bool | None = None,
817
- mentionned_in_news: bool | None = None,
818
- persona: list[str] | None = None,
819
- account_lists: dict[str, Any] | None = None,
820
- lead_lists: dict[str, Any] | None = None,
821
- viewed_profile_recently: bool | None = None,
822
- messaged_recently: bool | None = None,
823
- include_saved_leads: bool | None = None,
824
- include_saved_accounts: bool | None = None,
825
- ) -> dict[str, Any]:
826
- """
827
- Performs a comprehensive LinkedIn Sales Navigator people search with all available parameters.
828
- This function provides access to LinkedIn's advanced Sales Navigator search capabilities
829
- for finding people with precise targeting options.
830
-
831
- Args:
832
- account_id: The ID of the Unipile account to perform the search from (REQUIRED).
833
- cursor: Pagination cursor for the next page of entries.
834
- limit: Number of items to return.
835
- keywords: LinkedIn native filter: KEYWORDS.
836
- last_viewed_at: Unix timestamp for saved search filtering.
837
- saved_search_id: ID of saved search (overrides other parameters).
838
- recent_search_id: ID of recent search (overrides other parameters).
839
- location: LinkedIn native filter: GEOGRAPHY.
840
- location_by_postal_code: Location filter by postal code.
841
- industry: LinkedIn native filter: INDUSTRY.
842
- first_name: LinkedIn native filter: FIRST NAME.
843
- last_name: LinkedIn native filter: LAST NAME.
844
- tenure: LinkedIn native filter: YEARS OF EXPERIENCE.
845
- groups: LinkedIn native filter: GROUPS.
846
- school: LinkedIn native filter: SCHOOL.
847
- profile_language: ISO 639-1 language codes, LinkedIn native filter: PROFILE LANGUAGE.
848
- company: LinkedIn native filter: CURRENT COMPANY.
849
- company_headcount: LinkedIn native filter: COMPANY HEADCOUNT.
850
- company_type: LinkedIn native filter: COMPANY TYPE.
851
- company_location: LinkedIn native filter: COMPANY HEADQUARTERS LOCATION.
852
- tenure_at_company: LinkedIn native filter: YEARS IN CURRENT COMPANY.
853
- past_company: LinkedIn native filter: PAST COMPANY.
854
- function: LinkedIn native filter: FUNCTION.
855
- role: LinkedIn native filter: CURRENT JOB TITLE.
856
- tenure_at_role: LinkedIn native filter: YEARS IN CURRENT POSITION.
857
- seniority: LinkedIn native filter: SENIORITY LEVEL.
858
- past_role: LinkedIn native filter: PAST JOB TITLE.
859
- following_your_company: LinkedIn native filter: FOLLOWING YOUR COMPANY.
860
- viewed_your_profile_recently: LinkedIn native filter: VIEWED YOUR PROFILE RECENTLY.
861
- network_distance: First, second, third+ degree or GROUP, LinkedIn native filter: CONNECTION.
862
- connections_of: LinkedIn native filter: CONNECTIONS OF.
863
- past_colleague: LinkedIn native filter: PAST COLLEAGUE.
864
- shared_experiences: LinkedIn native filter: SHARED EXPERIENCES.
865
- changed_jobs: LinkedIn native filter: CHANGED JOBS.
866
- posted_on_linkedin: LinkedIn native filter: POSTED ON LINKEDIN.
867
- mentionned_in_news: LinkedIn native filter: MENTIONNED IN NEWS.
868
- persona: LinkedIn native filter: PERSONA.
869
- account_lists: LinkedIn native filter: ACCOUNT LISTS.
870
- lead_lists: LinkedIn native filter: LEAD LISTS.
871
- viewed_profile_recently: LinkedIn native filter: PEOPLE YOU INTERACTED WITH / VIEWED PROFILE.
872
- messaged_recently: LinkedIn native filter: PEOPLE YOU INTERACTED WITH / MESSAGED.
873
- include_saved_leads: LinkedIn native filter: SAVED LEADS AND ACCOUNTS / ALL MY SAVED LEADS.
874
- include_saved_accounts: LinkedIn native filter: SAVED LEADS AND ACCOUNTS / ALL MY SAVED ACCOUNTS.
875
-
876
- Returns:
877
- A dictionary containing search results and pagination details.
689
+ if not category:
690
+ raise ValueError("Category cannot be empty.")
878
691
 
879
- Raises:
880
- httpx.HTTPError: If the API request fails.
881
-
882
- Tags:
883
- linkedin, sales_navigator, people, search, advanced, api, important
884
- """
885
692
  url = f"{self.base_url}/api/v1/linkedin/search"
886
693
 
887
694
  params: dict[str, Any] = {"account_id": account_id}
@@ -890,138 +697,24 @@ class UnipileApp(APIApplication):
890
697
  if limit is not None:
891
698
  params["limit"] = limit
892
699
 
893
- payload: dict[str, Any] = {"api": "sales_navigator", "category": "people"}
894
-
895
- # Add all the Sales Navigator specific parameters
896
- sn_params = {
897
- "keywords": keywords,
898
- "last_viewed_at": last_viewed_at,
899
- "saved_search_id": saved_search_id,
900
- "recent_search_id": recent_search_id,
901
- "location": location,
902
- "location_by_postal_code": location_by_postal_code,
903
- "industry": industry,
904
- "first_name": first_name,
905
- "last_name": last_name,
906
- "tenure": tenure,
907
- "groups": groups,
908
- "school": school,
909
- "profile_language": profile_language,
910
- "company": company,
911
- "company_headcount": company_headcount,
912
- "company_type": company_type,
913
- "company_location": company_location,
914
- "tenure_at_company": tenure_at_company,
915
- "past_company": past_company,
916
- "function": function,
917
- "role": role,
918
- "tenure_at_role": tenure_at_role,
919
- "seniority": seniority,
920
- "past_role": past_role,
921
- "following_your_company": following_your_company,
922
- "viewed_your_profile_recently": viewed_your_profile_recently,
923
- "network_distance": network_distance,
924
- "connections_of": connections_of,
925
- "past_colleague": past_colleague,
926
- "shared_experiences": shared_experiences,
927
- "changed_jobs": changed_jobs,
928
- "posted_on_linkedin": posted_on_linkedin,
929
- "mentionned_in_news": mentionned_in_news,
930
- "persona": persona,
931
- "account_lists": account_lists,
932
- "lead_lists": lead_lists,
933
- "viewed_profile_recently": viewed_profile_recently,
934
- "messaged_recently": messaged_recently,
935
- "include_saved_leads": include_saved_leads,
936
- "include_saved_accounts": include_saved_accounts,
937
- }
938
-
939
- # Only add parameters that are not None
940
- payload.update({k: v for k, v in sn_params.items() if v is not None})
700
+ payload: dict[str, Any] = {"api": "classic", "category": category}
941
701
 
942
- response = self._post(url, params=params, data=payload)
943
- return self._handle_response(response)
944
-
945
- def company_search(
946
- self,
947
- account_id: str,
948
- cursor: str | None = None,
949
- limit: int | None = None,
950
- keywords: str | None = None,
951
- last_viewed_at: int | None = None,
952
- saved_search_id: str | None = None,
953
- recent_search_id: str | None = None,
954
- location: dict[str, Any] | None = None,
955
- location_by_postal_code: dict[str, Any] | None = None,
956
- industry: dict[str, Any] | None = None,
957
- company_headcount: list[dict[str, Any]] | None = None,
958
- company_type: list[str] | None = None,
959
- company_location: dict[str, Any] | None = None,
960
- following_your_company: bool | None = None,
961
- account_lists: dict[str, Any] | None = None,
962
- include_saved_accounts: bool | None = None,
963
- ) -> dict[str, Any]:
964
- """
965
- Performs a comprehensive LinkedIn Sales Navigator company search with relevant parameters.
966
- This function provides access to LinkedIn's advanced Sales Navigator search capabilities
967
- for finding companies with precise targeting options.
702
+ if keywords:
703
+ payload["keywords"] = keywords
968
704
 
969
- Args:
970
- account_id: The ID of the Unipile account to perform the search from (REQUIRED).
971
- cursor: Pagination cursor for the next page of entries.
972
- limit: Number of items to return.
973
- keywords: LinkedIn native filter: KEYWORDS.
974
- last_viewed_at: Unix timestamp for saved search filtering.
975
- saved_search_id: ID of saved search (overrides other parameters).
976
- recent_search_id: ID of recent search (overrides other parameters).
977
- location: LinkedIn native filter: GEOGRAPHY.
978
- location_by_postal_code: Location filter by postal code.
979
- industry: LinkedIn native filter: INDUSTRY.
980
- company_headcount: LinkedIn native filter: COMPANY HEADCOUNT. Example {"min": 10, "max": 100}
981
- company_type: LinkedIn native filter: COMPANY TYPE.
982
- company_location: LinkedIn native filter: COMPANY HEADQUARTERS LOCATION.
983
- following_your_company: LinkedIn native filter: FOLLOWING YOUR COMPANY.
984
- account_lists: LinkedIn native filter: ACCOUNT LISTS.
985
- include_saved_accounts: LinkedIn native filter: SAVED LEADS AND ACCOUNTS / ALL MY SAVED ACCOUNTS.
705
+ if category == "posts":
706
+ if date_posted:
707
+ payload["date_posted"] = date_posted
708
+ if sort_by:
709
+ payload["sort_by"] = sort_by
986
710
 
987
- Returns:
988
- A dictionary containing search results and pagination details.
989
-
990
- Raises:
991
- httpx.HTTPError: If the API request fails.
992
-
993
- Tags:
994
- linkedin, sales_navigator, companies, search, advanced, api, important
995
- """
996
- url = f"{self.base_url}/api/v1/linkedin/search"
997
-
998
- params: dict[str, Any] = {"account_id": account_id}
999
- if cursor:
1000
- params["cursor"] = cursor
1001
- if limit is not None:
1002
- params["limit"] = limit
1003
-
1004
- payload: dict[str, Any] = {"api": "sales_navigator", "category": "companies"}
1005
-
1006
- # Add all the Sales Navigator company-specific parameters
1007
- sn_params = {
1008
- "keywords": keywords,
1009
- "last_viewed_at": last_viewed_at,
1010
- "saved_search_id": saved_search_id,
1011
- "recent_search_id": recent_search_id,
1012
- "location": location,
1013
- "location_by_postal_code": location_by_postal_code,
1014
- "industry": industry,
1015
- "company_headcount": company_headcount,
1016
- "company_type": company_type,
1017
- "company_location": company_location,
1018
- "following_your_company": following_your_company,
1019
- "account_lists": account_lists,
1020
- "include_saved_accounts": include_saved_accounts,
1021
- }
1022
-
1023
- # Only add parameters that are not None
1024
- payload.update({k: v for k, v in sn_params.items() if v is not None})
711
+ elif category == "jobs":
712
+ payload["minimum_salary"] = {
713
+ "currency": "USD",
714
+ "value": minimum_salary_value,
715
+ }
716
+ if sort_by:
717
+ payload["sort_by"] = sort_by
1025
718
 
1026
719
  response = self._post(url, params=params, data=payload)
1027
720
  return self._handle_response(response)
@@ -1072,6 +765,4 @@ class UnipileApp(APIApplication):
1072
765
  self.create_post_comment,
1073
766
  self.create_reaction,
1074
767
  self.search,
1075
- self.people_search,
1076
- self.company_search,
1077
768
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: universal-mcp-applications
3
- Version: 0.1.27rc3
3
+ Version: 0.1.28
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
@@ -111,7 +111,7 @@ universal_mcp/applications/google_drive/__init__.py,sha256=DTyed4ADcCmALSyPT8whj
111
111
  universal_mcp/applications/google_drive/app.py,sha256=J81m8OBjE0552GGWsIfgM4idFjjZfPEOsjk0ZVeJzgM,257259
112
112
  universal_mcp/applications/google_gemini/README.md,sha256=MFeJU_xc3vTHdNqGC_dXNRv4ocSDYgHCs82RPXBeEn4,576
113
113
  universal_mcp/applications/google_gemini/__init__.py,sha256=KZWdPU74VKBBabLpAcPNEPRPLFk8v2i0ULnT4wVHM9U,33
114
- universal_mcp/applications/google_gemini/app.py,sha256=tqsF5T_M9rMXzp__2OSi4ujZ-nEwruM_Tgh4HHljDyw,8620
114
+ universal_mcp/applications/google_gemini/app.py,sha256=bxACR_6mWlMaVWHU22kCMVyJfPDyd_1zY2t-ugnTGcs,8620
115
115
  universal_mcp/applications/google_mail/README.md,sha256=GV6EmlrlXeXdtNaSTwn8qbQvygyOzl4a5X-PXerAS0c,5979
116
116
  universal_mcp/applications/google_mail/__init__.py,sha256=_VpJPPBAJvPX3urxUD2_kiQmld91tkVFSvAcdt5XbmI,31
117
117
  universal_mcp/applications/google_mail/app.py,sha256=dBx4zZhHg_C8_p_RSYdj52WV3xyiZLsNL3eOTcN40fk,60485
@@ -165,9 +165,9 @@ universal_mcp/applications/neon/app.py,sha256=ISwBIKfZn-xnCICrpQZI_BGz_6dhlPcV4E
165
165
  universal_mcp/applications/notion/README.md,sha256=SrLZdFYPCYzAJveGLV0gmFT54FD7rqjNQ1vTIviQAJA,2259
166
166
  universal_mcp/applications/notion/__init__.py,sha256=Qg3nadJs3ku-IozE8nVdWUmzBSpm2H3o8BOMGcZXmSo,27
167
167
  universal_mcp/applications/notion/app.py,sha256=3KyC8D0QQtn60O4Rf1ctqVVZ4GJLh_lRngH9dD8mR_g,20681
168
- universal_mcp/applications/onedrive/README.md,sha256=kOTKnd4l9pZl8Wx8tu310FfROWEECvEBQ1YvTPk3dp8,4085
168
+ universal_mcp/applications/onedrive/README.md,sha256=MGrO1S-PUC6sucRrhmBNJndaaaJbDAcmoK_XNGe_keg,4209
169
169
  universal_mcp/applications/onedrive/__init__.py,sha256=9uhv1jX0RdosE6oUiFFagbCmpKVUlWA5uRhvvdrjP2Q,29
170
- universal_mcp/applications/onedrive/app.py,sha256=qMZGMI0NZRyRNjFyZaEJFjlBUPJgruW94UybHAoLUQU,14435
170
+ universal_mcp/applications/onedrive/app.py,sha256=qz0AoNY5EObJaE3cZS7ggUSQ8grR0eVcCETOnclsuDc,14707
171
171
  universal_mcp/applications/openai/README.md,sha256=ag81IFx8utvlY6isaFDoq21Y-Z_9IYthMqJtq4iJKTU,3820
172
172
  universal_mcp/applications/openai/__init__.py,sha256=7h2xDZdb1pRh7ZDLtFK9BNDEbRHbjMma1GsVpxycvos,27
173
173
  universal_mcp/applications/openai/app.py,sha256=5pW85lC5SsojpQNPTZO4QkGkDAcLk8M3nvl1m1Bi0Vk,34123
@@ -197,7 +197,7 @@ universal_mcp/applications/rocketlane/__init__.py,sha256=jl3PjnTvPdjnbFXJgLywSlE
197
197
  universal_mcp/applications/rocketlane/app.py,sha256=Ae2hQFI5PylCLtNPJkTqWMLGsLx5fDd4wRFDhxTzTXQ,240689
198
198
  universal_mcp/applications/scraper/README.md,sha256=JUNLshHABs4T1f24nvQeee62YIElSkxpU-zs2kuS0Gw,1497
199
199
  universal_mcp/applications/scraper/__init__.py,sha256=W5Buzq8QbetUQm5m9xXCHeWcvVObU2vZ4xbvYtZImJo,28
200
- universal_mcp/applications/scraper/app.py,sha256=ksyFtmihCl48X-PZy0v6oQPE2EKpCDJGhy4ieMZ8-W0,19777
200
+ universal_mcp/applications/scraper/app.py,sha256=_lDh1XLdZIvhoIMSQh0YaDdSGT0_ZcDRQ9vZGUWFbyQ,6866
201
201
  universal_mcp/applications/semanticscholar/README.md,sha256=JpLY_698pvstgoNfQ5Go8C8ehQ-o68uFDX5kr86upK0,2834
202
202
  universal_mcp/applications/semanticscholar/__init__.py,sha256=eR36chrc0pbBsSE1GadvmQH0OmtKnSC91xbE7HcDPf0,36
203
203
  universal_mcp/applications/semanticscholar/app.py,sha256=OHTFkR-IwRU5Rvb1bEu7XmRHikht3hEgZxszLQu6kFI,22234
@@ -213,9 +213,9 @@ universal_mcp/applications/sentry/app.py,sha256=wfgn0s7iIx38eonp0Rwrz6E5fyUXi9ZX
213
213
  universal_mcp/applications/serpapi/README.md,sha256=8LiLNcdRIcp3lrL6i19FHWkbxzgLs_inmYIVgPbl1GE,1107
214
214
  universal_mcp/applications/serpapi/__init__.py,sha256=1lErMm8HVSYiNEnDDjQr8_5h-sFm_-i9LKjIw_QbDHI,28
215
215
  universal_mcp/applications/serpapi/app.py,sha256=T0phcKb7_sD3D3b8_zG7FyPfi0SGiPlFnafwsYULqDA,13422
216
- universal_mcp/applications/sharepoint/README.md,sha256=5Oa-eb_86ZGzPh1c11zLjXd7a5bcUfs4Q2we9-kHP4w,1940
216
+ universal_mcp/applications/sharepoint/README.md,sha256=vMGsbC8xhfz8xjAmIT66-t2G7xnBb-VUpl7-s08qHC8,1107
217
217
  universal_mcp/applications/sharepoint/__init__.py,sha256=Aj4fG4SQCzpbRMovrq5McIvKCAzl03FtROh7SUQ0Unk,31
218
- universal_mcp/applications/sharepoint/app.py,sha256=x6BIsnK9ajCeC94O4klFQ7TcD0wYQI8wfhmq146dvlg,9335
218
+ universal_mcp/applications/sharepoint/app.py,sha256=AIqMrdhGfVlmKBM8AfhF3uVIIMsUW2K5zo0HrEXcpI0,14730
219
219
  universal_mcp/applications/shopify/README.md,sha256=vXUNUmcR70PYG9Ojqlg8m1w3M5AXI10CZ-Or2oGrbuU,48415
220
220
  universal_mcp/applications/shopify/__init__.py,sha256=_TyHBCgryXtqpUTngnUnPmJmnTzQvi1jNyi4VIlsoXQ,28
221
221
  universal_mcp/applications/shopify/app.py,sha256=CtQFrh_J7dFJ9YoAh1AlyNx_WNPvG0zqJou0q6cwrFY,615057
@@ -258,7 +258,7 @@ universal_mcp/applications/twitter/api_segments/usage_api.py,sha256=Wx-bR8mBsFmj
258
258
  universal_mcp/applications/twitter/api_segments/users_api.py,sha256=cYyUrVmqNRLn5EWjrjcJu0yflTdxwv1m5nta18ajma4,81261
259
259
  universal_mcp/applications/unipile/README.md,sha256=gh_YsmeJ0pAU7XNBZD8OO-AgH7ed2kG8QPbxm2wYjlY,5205
260
260
  universal_mcp/applications/unipile/__init__.py,sha256=0UZVOiYo_dDXbvTmtHrZ_fgvrbpasjWV17EEm4pZq9E,28
261
- universal_mcp/applications/unipile/app.py,sha256=yCKlOQZP2iWjYrB6cYyeyJASMx6T1Ha0Vj53EPV23-M,45081
261
+ universal_mcp/applications/unipile/app.py,sha256=BZ17D8ylOb_HbtLn-Hlt7tqmk2NCSE3kUTbRJHMD-Lo,30009
262
262
  universal_mcp/applications/whatsapp/README.md,sha256=ZYbpVN0EqMW21ZCMcLNdheKX8OSPCkt3wcN8p8OZk5E,3849
263
263
  universal_mcp/applications/whatsapp/__init__.py,sha256=miHfSBpu5lx226T8dMbvOw_5H6MJCWOKVK_WbqMma-8,29
264
264
  universal_mcp/applications/whatsapp/app.py,sha256=jq7lukBtITqpm_K6l8r23G4N4QnU-u6AZQFToWDQY6g,23582
@@ -279,7 +279,7 @@ universal_mcp/applications/youtube/app.py,sha256=eqgqe0b53W9Mj0FZGW3ZqY3xkGF4NbO
279
279
  universal_mcp/applications/zenquotes/README.md,sha256=FJyoTGRCaZjF_bsCBqg1CrYcvIfuUG_Qk616G1wjhF8,512
280
280
  universal_mcp/applications/zenquotes/__init__.py,sha256=C5nEHZ3Xy6nYUarq0BqQbbJnHs0UtSlqhk0DqmvWiHk,58
281
281
  universal_mcp/applications/zenquotes/app.py,sha256=7xIEnSZWAGYu5583Be2ZjSCtLUAfMWRzucSpp7hw_h4,1299
282
- universal_mcp_applications-0.1.27rc3.dist-info/METADATA,sha256=3BHaDpmqQHV1pe3xtNIa0BHbQNlRuRwN8Gc1KKLV0q4,2959
283
- universal_mcp_applications-0.1.27rc3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
284
- universal_mcp_applications-0.1.27rc3.dist-info/licenses/LICENSE,sha256=NweDZVPslBAZFzlgByF158b85GR0f5_tLQgq1NS48To,1063
285
- universal_mcp_applications-0.1.27rc3.dist-info/RECORD,,
282
+ universal_mcp_applications-0.1.28.dist-info/METADATA,sha256=lEp2zhtuSxY7_KyKjho3GQEoGf-LYcYA2W-bevM_W2U,2956
283
+ universal_mcp_applications-0.1.28.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
284
+ universal_mcp_applications-0.1.28.dist-info/licenses/LICENSE,sha256=NweDZVPslBAZFzlgByF158b85GR0f5_tLQgq1NS48To,1063
285
+ universal_mcp_applications-0.1.28.dist-info/RECORD,,