universal-mcp-applications 0.1.27rc3__py3-none-any.whl → 0.1.29__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/google_gemini/app.py +3 -3
- universal_mcp/applications/onedrive/README.md +4 -4
- universal_mcp/applications/onedrive/app.py +1 -1
- universal_mcp/applications/scraper/app.py +36 -268
- universal_mcp/applications/sharepoint/README.md +16 -14
- universal_mcp/applications/sharepoint/app.py +267 -154
- universal_mcp/applications/unipile/app.py +29 -338
- {universal_mcp_applications-0.1.27rc3.dist-info → universal_mcp_applications-0.1.29.dist-info}/METADATA +1 -1
- {universal_mcp_applications-0.1.27rc3.dist-info → universal_mcp_applications-0.1.29.dist-info}/RECORD +11 -11
- {universal_mcp_applications-0.1.27rc3.dist-info → universal_mcp_applications-0.1.29.dist-info}/WHEEL +0 -0
- {universal_mcp_applications-0.1.27rc3.dist-info → universal_mcp_applications-0.1.29.dist-info}/licenses/LICENSE +0 -0
|
@@ -616,7 +616,7 @@ class UnipileApp(APIApplication):
|
|
|
616
616
|
|
|
617
617
|
Args:
|
|
618
618
|
post_social_id: The social ID of the post or comment to react to.
|
|
619
|
-
reaction_type: The type of reaction .
|
|
619
|
+
reaction_type: The type of reaction. Valid values are "like", "celebrate", "love", "insightful", "funny", or "support".
|
|
620
620
|
account_id: Account ID of the Unipile account performing the reaction.
|
|
621
621
|
comment_id: Optional ID of a specific comment to react to instead of the post.
|
|
622
622
|
|
|
@@ -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"]
|
|
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
|
-
|
|
664
|
-
|
|
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
|
|
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
|
-
category: Type of search to perform
|
|
690
|
-
api: Which LinkedIn API to use - "classic" or "sales_navigator".
|
|
671
|
+
category: Type of search to perform. Valid values are "people", "companies", "posts", or "jobs".
|
|
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
|
-
|
|
695
|
-
|
|
696
|
-
|
|
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). Valid values are "past_day", "past_week", or "past_month".
|
|
676
|
+
sort_by: How to sort the results (for posts and jobs). Valid values are "relevance" or "date".
|
|
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
|
-
|
|
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": "
|
|
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
|
-
|
|
943
|
-
|
|
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
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
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
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
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.
|
|
3
|
+
Version: 0.1.29
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
200
|
+
universal_mcp/applications/scraper/app.py,sha256=-BE_Ghfnh4_2XeE7MvxuYcY5eodpIlVeR4_XE3Z9jIQ,6997
|
|
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=
|
|
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=
|
|
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=
|
|
261
|
+
universal_mcp/applications/unipile/app.py,sha256=FUMDk0JZb8kRmMlPn6_NdIiCz0SeduDJABG7UHAsl04,30206
|
|
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.
|
|
283
|
-
universal_mcp_applications-0.1.
|
|
284
|
-
universal_mcp_applications-0.1.
|
|
285
|
-
universal_mcp_applications-0.1.
|
|
282
|
+
universal_mcp_applications-0.1.29.dist-info/METADATA,sha256=cHdzZVGcvF6XjJbqilkT9shgIYCYXGxyk7r5SzxN3fc,2956
|
|
283
|
+
universal_mcp_applications-0.1.29.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
284
|
+
universal_mcp_applications-0.1.29.dist-info/licenses/LICENSE,sha256=NweDZVPslBAZFzlgByF158b85GR0f5_tLQgq1NS48To,1063
|
|
285
|
+
universal_mcp_applications-0.1.29.dist-info/RECORD,,
|
{universal_mcp_applications-0.1.27rc3.dist-info → universal_mcp_applications-0.1.29.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|