universal-mcp-applications 0.1.20__tar.gz → 0.1.21__tar.gz
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-0.1.20 → universal_mcp_applications-0.1.21}/PKG-INFO +1 -1
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/bump_and_release.sh +4 -3
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/pyproject.toml +1 -1
- universal_mcp_applications-0.1.21/src/universal_mcp/applications/scraper/app.py +408 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/unipile/app.py +257 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/youtube/app.py +16 -6
- universal_mcp_applications-0.1.21/test.py +41 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/uv.lock +2 -2
- universal_mcp_applications-0.1.20/src/universal_mcp/applications/scraper/app.py +0 -189
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/.gitignore +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/GEMINI.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/LICENSE +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/examples/children_story_builder.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/scripts/docgen.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/scripts/prompts.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/scripts/readme.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/scripts/run_docgen.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/tests/test_applications.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ahrefs/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ahrefs/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ahrefs/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/airtable/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/airtable/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/airtable/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/apollo/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/apollo/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/apollo/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/asana/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/asana/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/asana/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/aws_s3/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/aws_s3/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/aws_s3/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/bill/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/bill/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/bill/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/box/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/box/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/box/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/braze/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/braze/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/braze/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/cal_com_v2/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/cal_com_v2/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/cal_com_v2/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/calendly/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/calendly/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/calendly/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/canva/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/canva/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/canva/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/clickup/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/clickup/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/clickup/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/coda/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/coda/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/coda/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/confluence/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/confluence/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/confluence/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/contentful/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/contentful/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/contentful/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/crustdata/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/crustdata/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/crustdata/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/dialpad/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/dialpad/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/dialpad/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/digitalocean/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/digitalocean/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/digitalocean/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/domain_checker/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/domain_checker/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/domain_checker/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/e2b/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/e2b/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/e2b/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/elevenlabs/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/elevenlabs/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/elevenlabs/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/exa/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/exa/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/exa/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/falai/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/falai/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/falai/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/figma/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/figma/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/figma/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/file_system/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/file_system/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/file_system/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/firecrawl/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/firecrawl/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/firecrawl/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fireflies/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fireflies/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fireflies/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fpl/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fpl/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fpl/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fpl/utils/api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fpl/utils/fixtures.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fpl/utils/helper.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fpl/utils/league_utils.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/fpl/utils/position_utils.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ghost_content/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ghost_content/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ghost_content/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/github/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/github/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/github/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/gong/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/gong/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/gong/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_calendar/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_calendar/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_calendar/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_docs/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_docs/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_docs/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_drive/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_drive/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_drive/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_gemini/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_gemini/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_gemini/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_mail/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_mail/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_mail/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_searchconsole/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_searchconsole/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_searchconsole/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_sheet/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_sheet/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_sheet/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/google_sheet/helper.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hashnode/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hashnode/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hashnode/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/heygen/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/heygen/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/heygen/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/http_tools/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/http_tools/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/http_tools/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hubspot/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hubspot/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hubspot/api_segments/api_segment_base.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hubspot/api_segments/crm_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hubspot/api_segments/marketing_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/hubspot/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/jira/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/jira/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/jira/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/klaviyo/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/klaviyo/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/klaviyo/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/linkedin/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/linkedin/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/linkedin/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/mailchimp/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/mailchimp/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/mailchimp/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/markitdown/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/markitdown/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/markitdown/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/miro/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/miro/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/miro/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ms_teams/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ms_teams/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/ms_teams/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/neon/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/neon/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/neon/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/notion/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/notion/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/notion/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/openai/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/openai/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/openai/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/outlook/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/outlook/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/outlook/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/perplexity/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/perplexity/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/perplexity/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/pipedrive/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/pipedrive/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/pipedrive/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/posthog/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/posthog/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/posthog/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/reddit/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/reddit/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/reddit/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/resend/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/resend/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/resend/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/retell/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/retell/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/retell/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/rocketlane/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/rocketlane/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/rocketlane/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/scraper/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/scraper/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/semanticscholar/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/semanticscholar/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/semanticscholar/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/semrush/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/semrush/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/semrush/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sendgrid/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sendgrid/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sendgrid/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sentry/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sentry/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sentry/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/serpapi/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/serpapi/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/serpapi/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sharepoint/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sharepoint/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/sharepoint/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/shopify/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/shopify/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/shopify/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/shortcut/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/shortcut/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/shortcut/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/slack/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/slack/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/slack/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/spotify/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/spotify/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/spotify/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/supabase/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/supabase/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/supabase/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/tavily/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/tavily/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/tavily/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/trello/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/trello/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/trello/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twilio/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twilio/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twilio/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/api_segment_base.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/compliance_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/dm_events_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/likes_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/lists_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/openapi_json_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/spaces_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/trends_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/tweets_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/usage_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/api_segments/users_api.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/twitter/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/unipile/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/unipile/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/whatsapp/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/whatsapp/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/whatsapp/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/whatsapp/audio.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/whatsapp/whatsapp.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/whatsapp_business/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/whatsapp_business/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/whatsapp_business/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/wrike/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/wrike/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/wrike/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/yahoo_finance/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/yahoo_finance/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/yahoo_finance/app.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/youtube/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/youtube/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/zenquotes/README.md +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/zenquotes/__init__.py +0 -0
- {universal_mcp_applications-0.1.20 → universal_mcp_applications-0.1.21}/src/universal_mcp/applications/zenquotes/app.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: universal-mcp-applications
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.21
|
|
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
|
|
@@ -20,8 +20,9 @@ BRANCH=$(git branch --show-current)
|
|
|
20
20
|
CURRENT_VERSION=$(grep -E '^version = "[0-9]+\.[0-9]+\.[0-9]+.*"' pyproject.toml | cut -d'"' -f2)
|
|
21
21
|
|
|
22
22
|
# Split version into major, minor, patch
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
MAJOR=$(echo "$CURRENT_VERSION" | cut -d'.' -f1)
|
|
24
|
+
MINOR=$(echo "$CURRENT_VERSION" | cut -d'.' -f2)
|
|
25
|
+
PATCH=$(echo "$CURRENT_VERSION" | cut -d'.' -f3)
|
|
25
26
|
# Remove any rc suffix from PATCH if it exists
|
|
26
27
|
PATCH_NUM=$(echo $PATCH | sed 's/-rc[0-9]*//')
|
|
27
28
|
|
|
@@ -50,7 +51,7 @@ else
|
|
|
50
51
|
fi
|
|
51
52
|
|
|
52
53
|
# Update version in pyproject.toml
|
|
53
|
-
sed -i
|
|
54
|
+
sed -i "s/^version = \".*\"/version = \"$NEW_VERSION\"/" pyproject.toml
|
|
54
55
|
|
|
55
56
|
echo "Version bumped from $CURRENT_VERSION to $NEW_VERSION"
|
|
56
57
|
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from dotenv import load_dotenv
|
|
3
|
+
|
|
4
|
+
load_dotenv()
|
|
5
|
+
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
from universal_mcp.applications.application import APIApplication
|
|
9
|
+
from universal_mcp.applications.unipile import UnipileApp
|
|
10
|
+
from typing import Any, Optional
|
|
11
|
+
from universal_mcp.integrations import Integration
|
|
12
|
+
from loguru import logger
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ScraperApp(APIApplication):
|
|
16
|
+
"""
|
|
17
|
+
Application for interacting with LinkedIn API.
|
|
18
|
+
Provides a simplified interface for LinkedIn search operations.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
def __init__(self, integration: Integration, **kwargs: Any) -> None:
|
|
22
|
+
"""
|
|
23
|
+
Initialize the ScraperApp.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
integration: The integration configuration containing credentials and other settings.
|
|
27
|
+
It is expected that the integration provides the necessary credentials
|
|
28
|
+
for LinkedIn API access.
|
|
29
|
+
"""
|
|
30
|
+
super().__init__(name="scraper", integration=integration, **kwargs)
|
|
31
|
+
if self.integration:
|
|
32
|
+
credentials = self.integration.get_credentials()
|
|
33
|
+
self.account_id = credentials.get("account_id")
|
|
34
|
+
self._unipile_app = UnipileApp(integration=self.integration)
|
|
35
|
+
else:
|
|
36
|
+
logger.warning(f"Integration not found")
|
|
37
|
+
self.account_id = None
|
|
38
|
+
self._unipile_app = None
|
|
39
|
+
|
|
40
|
+
def linkedin_post_search(
|
|
41
|
+
self,
|
|
42
|
+
category: str = "posts",
|
|
43
|
+
api: str = "classic",
|
|
44
|
+
cursor: Optional[str] = None,
|
|
45
|
+
limit: Optional[int] = None,
|
|
46
|
+
keywords: Optional[str] = None,
|
|
47
|
+
sort_by: Optional[str] = None,
|
|
48
|
+
date_posted: Optional[str] = None,
|
|
49
|
+
content_type: Optional[str] = None,
|
|
50
|
+
) -> dict[str, Any]:
|
|
51
|
+
"""
|
|
52
|
+
Performs a general LinkedIn search for posts using keywords and filters like date and content type. It supports pagination and can utilize either the 'classic' or 'sales_navigator' API, searching broadly across the platform rather than fetching posts from a specific user's profile.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
category: Type of search to perform (defaults to "posts").
|
|
56
|
+
api: Which LinkedIn API to use - "classic" or "sales_navigator".
|
|
57
|
+
cursor: Pagination cursor for the next page of entries.
|
|
58
|
+
limit: Number of items to return (up to 50 for Classic search).
|
|
59
|
+
keywords: Keywords to search for.
|
|
60
|
+
sort_by: How to sort the results, e.g., "relevance" or "date".
|
|
61
|
+
date_posted: Filter posts by when they were posted.
|
|
62
|
+
content_type: Filter by the type of content in the post. Example: "videos", "images", "live_videos", "collaborative_articles", "documents"
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
A dictionary containing search results and pagination details.
|
|
66
|
+
|
|
67
|
+
Raises:
|
|
68
|
+
httpx.HTTPError: If the API request fails.
|
|
69
|
+
|
|
70
|
+
Tags:
|
|
71
|
+
linkedin, search, posts, api, scrapper, important
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
return self._unipile_app.search(
|
|
75
|
+
account_id=self.account_id,
|
|
76
|
+
category=category,
|
|
77
|
+
api=api,
|
|
78
|
+
cursor=cursor,
|
|
79
|
+
limit=limit,
|
|
80
|
+
keywords=keywords,
|
|
81
|
+
sort_by=sort_by,
|
|
82
|
+
date_posted=date_posted,
|
|
83
|
+
content_type=content_type,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
def linkedin_list_profile_posts(
|
|
87
|
+
self,
|
|
88
|
+
identifier: str,
|
|
89
|
+
cursor: Optional[str] = None,
|
|
90
|
+
limit: Optional[int] = None,
|
|
91
|
+
) -> dict[str, Any]:
|
|
92
|
+
"""
|
|
93
|
+
Fetches a paginated list of all LinkedIn posts from a specific user or company profile using their unique identifier. This function retrieves content directly from a profile, unlike `linkedin_post_search` which finds posts across LinkedIn based on keywords and other filters.
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
identifier: The entity's provider internal ID (LinkedIn ID).starts with ACo for users, while for companies it's a series of numbers.
|
|
97
|
+
cursor: Pagination cursor for the next page of entries.
|
|
98
|
+
limit: Number of items to return (1-100, though spec allows up to 250).
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
A dictionary containing a list of post objects and pagination details.
|
|
102
|
+
|
|
103
|
+
Raises:
|
|
104
|
+
httpx.HTTPError: If the API request fails.
|
|
105
|
+
|
|
106
|
+
Tags:
|
|
107
|
+
linkedin, post, list, user_posts, company_posts, content, api, important
|
|
108
|
+
"""
|
|
109
|
+
|
|
110
|
+
return self._unipile_app.list_profile_posts(
|
|
111
|
+
identifier=identifier,
|
|
112
|
+
account_id=self.account_id,
|
|
113
|
+
cursor=cursor,
|
|
114
|
+
limit=limit,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
def linkedin_retrieve_profile(
|
|
118
|
+
self,
|
|
119
|
+
identifier: str,
|
|
120
|
+
) -> dict[str, Any]:
|
|
121
|
+
"""
|
|
122
|
+
Retrieves a specific LinkedIn user's profile by their unique identifier, which can be an internal provider ID or a public username. This function simplifies data access by delegating the actual profile retrieval request to the integrated Unipile application, distinct from functions that list posts or comments.
|
|
123
|
+
|
|
124
|
+
Args:
|
|
125
|
+
identifier: Can be the provider's internal id OR the provider's public id of the requested user.
|
|
126
|
+
For example, for https://www.linkedin.com/in/manojbajaj95/, the identifier is "manojbajaj95".
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
A dictionary containing the user's profile details.
|
|
130
|
+
|
|
131
|
+
Raises:
|
|
132
|
+
httpx.HTTPError: If the API request fails.
|
|
133
|
+
|
|
134
|
+
Tags:
|
|
135
|
+
linkedin, user, profile, retrieve, get, api, important
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
return self._unipile_app.retrieve_user_profile(
|
|
139
|
+
identifier=identifier,
|
|
140
|
+
account_id=self.account_id,
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
def linkedin_list_post_comments(
|
|
144
|
+
self,
|
|
145
|
+
post_id: str,
|
|
146
|
+
comment_id: Optional[str] = None,
|
|
147
|
+
cursor: Optional[str] = None,
|
|
148
|
+
limit: Optional[int] = None,
|
|
149
|
+
) -> dict[str, Any]:
|
|
150
|
+
"""
|
|
151
|
+
Fetches comments for a specified LinkedIn post. If a `comment_id` is provided, it retrieves replies to that comment instead of top-level comments. This function supports pagination and specifically targets comments, unlike others in the class that search for or list entire posts.
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
post_id: The social ID of the post. Example rn:li:activity:7342082869034393600
|
|
155
|
+
comment_id: If provided, retrieves replies to this comment ID instead of top-level comments.
|
|
156
|
+
cursor: Pagination cursor.
|
|
157
|
+
limit: Number of comments to return.
|
|
158
|
+
|
|
159
|
+
Returns:
|
|
160
|
+
A dictionary containing a list of comment objects and pagination details.
|
|
161
|
+
|
|
162
|
+
Raises:
|
|
163
|
+
httpx.HTTPError: If the API request fails.
|
|
164
|
+
|
|
165
|
+
Tags:
|
|
166
|
+
linkedin, post, comment, list, content, api, important
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
return self._unipile_app.list_post_comments(
|
|
170
|
+
post_id=post_id,
|
|
171
|
+
account_id=self.account_id,
|
|
172
|
+
comment_id=comment_id,
|
|
173
|
+
cursor=cursor,
|
|
174
|
+
limit=limit,
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
def linkedin_people_search(
|
|
178
|
+
self,
|
|
179
|
+
cursor: Optional[str] = None,
|
|
180
|
+
limit: Optional[int] = None,
|
|
181
|
+
keywords: Optional[str] = None,
|
|
182
|
+
last_viewed_at: Optional[int] = None,
|
|
183
|
+
saved_search_id: Optional[str] = None,
|
|
184
|
+
recent_search_id: Optional[str] = None,
|
|
185
|
+
location: Optional[dict[str, Any]] = None,
|
|
186
|
+
location_by_postal_code: Optional[dict[str, Any]] = None,
|
|
187
|
+
industry: Optional[dict[str, Any]] = None,
|
|
188
|
+
first_name: Optional[str] = None,
|
|
189
|
+
last_name: Optional[str] = None,
|
|
190
|
+
tenure: Optional[list[dict[str, Any]]] = None,
|
|
191
|
+
groups: Optional[list[str]] = None,
|
|
192
|
+
school: Optional[dict[str, Any]] = None,
|
|
193
|
+
profile_language: Optional[list[str]] = None,
|
|
194
|
+
company: Optional[dict[str, Any]] = None,
|
|
195
|
+
company_headcount: Optional[list[dict[str, Any]]] = None,
|
|
196
|
+
company_type: Optional[list[str]] = None,
|
|
197
|
+
company_location: Optional[dict[str, Any]] = None,
|
|
198
|
+
tenure_at_company: Optional[list[dict[str, Any]]] = None,
|
|
199
|
+
past_company: Optional[dict[str, Any]] = None,
|
|
200
|
+
function: Optional[dict[str, Any]] = None,
|
|
201
|
+
role: Optional[dict[str, Any]] = None,
|
|
202
|
+
tenure_at_role: Optional[list[dict[str, Any]]] = None,
|
|
203
|
+
seniority: Optional[dict[str, Any]] = None,
|
|
204
|
+
past_role: Optional[dict[str, Any]] = None,
|
|
205
|
+
following_your_company: Optional[bool] = None,
|
|
206
|
+
viewed_your_profile_recently: Optional[bool] = None,
|
|
207
|
+
network_distance: Optional[list[str]] = None,
|
|
208
|
+
connections_of: Optional[list[str]] = None,
|
|
209
|
+
past_colleague: Optional[bool] = None,
|
|
210
|
+
shared_experiences: Optional[bool] = None,
|
|
211
|
+
changed_jobs: Optional[bool] = None,
|
|
212
|
+
posted_on_linkedin: Optional[bool] = None,
|
|
213
|
+
mentionned_in_news: Optional[bool] = None,
|
|
214
|
+
persona: Optional[list[str]] = None,
|
|
215
|
+
account_lists: Optional[dict[str, Any]] = None,
|
|
216
|
+
lead_lists: Optional[dict[str, Any]] = None,
|
|
217
|
+
viewed_profile_recently: Optional[bool] = None,
|
|
218
|
+
messaged_recently: Optional[bool] = None,
|
|
219
|
+
include_saved_leads: Optional[bool] = None,
|
|
220
|
+
include_saved_accounts: Optional[bool] = None,
|
|
221
|
+
) -> dict[str, Any]:
|
|
222
|
+
"""
|
|
223
|
+
Performs a comprehensive LinkedIn Sales Navigator people search with advanced targeting options.
|
|
224
|
+
This function provides access to LinkedIn's Sales Navigator search capabilities for finding people
|
|
225
|
+
with precise filters including experience, company details, education, and relationship criteria.
|
|
226
|
+
|
|
227
|
+
Args:
|
|
228
|
+
cursor: Pagination cursor for the next page of entries.
|
|
229
|
+
limit: Number of items to return.
|
|
230
|
+
keywords: LinkedIn native filter: KEYWORDS.
|
|
231
|
+
last_viewed_at: Unix timestamp for saved search filtering.
|
|
232
|
+
saved_search_id: ID of saved search (overrides other parameters).
|
|
233
|
+
recent_search_id: ID of recent search (overrides other parameters).
|
|
234
|
+
location: LinkedIn native filter: GEOGRAPHY. Example: {"include": ["San Francisco Bay Area", "New York City Area"]}
|
|
235
|
+
location_by_postal_code: Location filter by postal code. Example: {"postal_code": "94105", "radius": "25"}
|
|
236
|
+
industry: LinkedIn native filter: INDUSTRY. Example: {"include": ["Information Technology and Services", "Financial Services"]}
|
|
237
|
+
first_name: LinkedIn native filter: FIRST NAME. Example: "John"
|
|
238
|
+
last_name: LinkedIn native filter: LAST NAME. Example: "Smith"
|
|
239
|
+
tenure: LinkedIn native filter: YEARS OF EXPERIENCE. Example: [{"min": 5, "max": 10}]
|
|
240
|
+
groups: LinkedIn native filter: GROUPS. Example: ["group_id_1", "group_id_2"]
|
|
241
|
+
school: LinkedIn native filter: SCHOOL. Example: {"include": ["Stanford University", "Harvard University"]}
|
|
242
|
+
profile_language: ISO 639-1 language codes, LinkedIn native filter: PROFILE LANGUAGE. Example: ["en", "es"]
|
|
243
|
+
company: LinkedIn native filter: CURRENT COMPANY. Example: {"include": ["Google", "Microsoft", "Apple"]}
|
|
244
|
+
company_headcount: LinkedIn native filter: COMPANY HEADCOUNT. Example: [{"min": 100, "max": 1000}]
|
|
245
|
+
company_type: LinkedIn native filter: COMPANY TYPE. Example: ["Public Company", "Privately Held"]
|
|
246
|
+
company_location: LinkedIn native filter: COMPANY HEADQUARTERS LOCATION. Example: {"include": ["San Francisco", "Seattle"]}
|
|
247
|
+
tenure_at_company: LinkedIn native filter: YEARS IN CURRENT COMPANY. Example: [{"min": 2, "max": 5}]
|
|
248
|
+
past_company: LinkedIn native filter: PAST COMPANY. Example: {"include": ["Facebook", "Amazon"]}
|
|
249
|
+
function: LinkedIn native filter: FUNCTION. Example: {"include": ["Engineering", "Sales", "Marketing"]}
|
|
250
|
+
role: LinkedIn native filter: CURRENT JOB TITLE. Example: {"include": ["Software Engineer", "Product Manager"]}
|
|
251
|
+
tenure_at_role: LinkedIn native filter: YEARS IN CURRENT POSITION. Example: [{"min": 1, "max": 3}]
|
|
252
|
+
seniority: LinkedIn native filter: SENIORITY LEVEL. Example: {"include": ["Senior", "Director", "VP"]}
|
|
253
|
+
past_role: LinkedIn native filter: PAST JOB TITLE. Example: {"include": ["Senior Developer", "Team Lead"]}
|
|
254
|
+
following_your_company: LinkedIn native filter: FOLLOWING YOUR COMPANY. Example: True
|
|
255
|
+
viewed_your_profile_recently: LinkedIn native filter: VIEWED YOUR PROFILE RECENTLY. Example: True
|
|
256
|
+
network_distance: First, second, third+ degree or GROUP, LinkedIn native filter: CONNECTION. Example: ["1st", "2nd"]
|
|
257
|
+
connections_of: LinkedIn native filter: CONNECTIONS OF. Example: ["person_id_1", "person_id_2"]
|
|
258
|
+
past_colleague: LinkedIn native filter: PAST COLLEAGUE. Example: True
|
|
259
|
+
shared_experiences: LinkedIn native filter: SHARED EXPERIENCES. Example: True
|
|
260
|
+
changed_jobs: LinkedIn native filter: CHANGED JOBS. Example: True
|
|
261
|
+
posted_on_linkedin: LinkedIn native filter: POSTED ON LINKEDIN. Example: True
|
|
262
|
+
mentionned_in_news: LinkedIn native filter: MENTIONNED IN NEWS. Example: True
|
|
263
|
+
persona: LinkedIn native filter: PERSONA. Example: ["persona_id_1", "persona_id_2"]
|
|
264
|
+
account_lists: LinkedIn native filter: ACCOUNT LISTS. Example: {"include": ["list_id_1"]}
|
|
265
|
+
lead_lists: LinkedIn native filter: LEAD LISTS. Example: {"include": ["lead_list_id_1"]}
|
|
266
|
+
viewed_profile_recently: LinkedIn native filter: PEOPLE YOU INTERACTED WITH / VIEWED PROFILE. Example: True
|
|
267
|
+
messaged_recently: LinkedIn native filter: PEOPLE YOU INTERACTED WITH / MESSAGED. Example: True
|
|
268
|
+
include_saved_leads: LinkedIn native filter: SAVED LEADS AND ACCOUNTS / ALL MY SAVED LEADS. Example: True
|
|
269
|
+
include_saved_accounts: LinkedIn native filter: SAVED LEADS AND ACCOUNTS / ALL MY SAVED ACCOUNTS. Example: True
|
|
270
|
+
|
|
271
|
+
Returns:
|
|
272
|
+
A dictionary containing search results and pagination details.
|
|
273
|
+
|
|
274
|
+
Raises:
|
|
275
|
+
httpx.HTTPError: If the API request fails.
|
|
276
|
+
|
|
277
|
+
Tags:
|
|
278
|
+
linkedin, sales_navigator, people, search, advanced, scraper, api, important
|
|
279
|
+
"""
|
|
280
|
+
return self._unipile_app.people_search(
|
|
281
|
+
account_id=self.account_id,
|
|
282
|
+
cursor=cursor,
|
|
283
|
+
limit=limit,
|
|
284
|
+
keywords=keywords,
|
|
285
|
+
last_viewed_at=last_viewed_at,
|
|
286
|
+
saved_search_id=saved_search_id,
|
|
287
|
+
recent_search_id=recent_search_id,
|
|
288
|
+
location=location,
|
|
289
|
+
location_by_postal_code=location_by_postal_code,
|
|
290
|
+
industry=industry,
|
|
291
|
+
first_name=first_name,
|
|
292
|
+
last_name=last_name,
|
|
293
|
+
tenure=tenure,
|
|
294
|
+
groups=groups,
|
|
295
|
+
school=school,
|
|
296
|
+
profile_language=profile_language,
|
|
297
|
+
company=company,
|
|
298
|
+
company_headcount=company_headcount,
|
|
299
|
+
company_type=company_type,
|
|
300
|
+
company_location=company_location,
|
|
301
|
+
tenure_at_company=tenure_at_company,
|
|
302
|
+
past_company=past_company,
|
|
303
|
+
function=function,
|
|
304
|
+
role=role,
|
|
305
|
+
tenure_at_role=tenure_at_role,
|
|
306
|
+
seniority=seniority,
|
|
307
|
+
past_role=past_role,
|
|
308
|
+
following_your_company=following_your_company,
|
|
309
|
+
viewed_your_profile_recently=viewed_your_profile_recently,
|
|
310
|
+
network_distance=network_distance,
|
|
311
|
+
connections_of=connections_of,
|
|
312
|
+
past_colleague=past_colleague,
|
|
313
|
+
shared_experiences=shared_experiences,
|
|
314
|
+
changed_jobs=changed_jobs,
|
|
315
|
+
posted_on_linkedin=posted_on_linkedin,
|
|
316
|
+
mentionned_in_news=mentionned_in_news,
|
|
317
|
+
persona=persona,
|
|
318
|
+
account_lists=account_lists,
|
|
319
|
+
lead_lists=lead_lists,
|
|
320
|
+
viewed_profile_recently=viewed_profile_recently,
|
|
321
|
+
messaged_recently=messaged_recently,
|
|
322
|
+
include_saved_leads=include_saved_leads,
|
|
323
|
+
include_saved_accounts=include_saved_accounts,
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
def linkedin_company_search(
|
|
327
|
+
self,
|
|
328
|
+
cursor: Optional[str] = None,
|
|
329
|
+
limit: Optional[int] = None,
|
|
330
|
+
keywords: Optional[str] = None,
|
|
331
|
+
last_viewed_at: Optional[int] = None,
|
|
332
|
+
saved_search_id: Optional[str] = None,
|
|
333
|
+
recent_search_id: Optional[str] = None,
|
|
334
|
+
location: Optional[dict[str, Any]] = None,
|
|
335
|
+
location_by_postal_code: Optional[dict[str, Any]] = None,
|
|
336
|
+
industry: Optional[dict[str, Any]] = None,
|
|
337
|
+
company_headcount: Optional[list[dict[str, Any]]] = None,
|
|
338
|
+
company_type: Optional[list[str]] = None,
|
|
339
|
+
company_location: Optional[dict[str, Any]] = None,
|
|
340
|
+
following_your_company: Optional[bool] = None,
|
|
341
|
+
account_lists: Optional[dict[str, Any]] = None,
|
|
342
|
+
include_saved_accounts: Optional[bool] = None,
|
|
343
|
+
) -> dict[str, Any]:
|
|
344
|
+
"""
|
|
345
|
+
Performs a comprehensive LinkedIn Sales Navigator company search with advanced targeting options.
|
|
346
|
+
This function provides access to LinkedIn's Sales Navigator search capabilities for finding companies
|
|
347
|
+
with precise filters including size, location, industry, and relationship criteria.
|
|
348
|
+
|
|
349
|
+
Args:
|
|
350
|
+
cursor: Pagination cursor for the next page of entries.
|
|
351
|
+
limit: Number of items to return.
|
|
352
|
+
keywords: LinkedIn native filter: KEYWORDS. Example: "fintech startup"
|
|
353
|
+
last_viewed_at: Unix timestamp for saved search filtering.
|
|
354
|
+
saved_search_id: ID of saved search (overrides other parameters).
|
|
355
|
+
recent_search_id: ID of recent search (overrides other parameters).
|
|
356
|
+
location: LinkedIn native filter: GEOGRAPHY. Example: {"include": ["San Francisco Bay Area", "New York City Area"]}
|
|
357
|
+
location_by_postal_code: Location filter by postal code. Example: {"postal_code": "94105", "radius": "25"}
|
|
358
|
+
industry: LinkedIn native filter: INDUSTRY. Example: {"include": ["Information Technology and Services", "Financial Services"]}
|
|
359
|
+
company_headcount: LinkedIn native filter: COMPANY HEADCOUNT. Example: [{"min": 10, "max": 100}]
|
|
360
|
+
company_type: LinkedIn native filter: COMPANY TYPE. Example: ["Public Company", "Privately Held", "Startup"]
|
|
361
|
+
company_location: LinkedIn native filter: COMPANY HEADQUARTERS LOCATION. Example: {"include": ["San Francisco", "Seattle", "Austin"]}
|
|
362
|
+
following_your_company: LinkedIn native filter: FOLLOWING YOUR COMPANY. Example: True
|
|
363
|
+
account_lists: LinkedIn native filter: ACCOUNT LISTS. Example: {"include": ["account_list_id_1"]}
|
|
364
|
+
include_saved_accounts: LinkedIn native filter: SAVED LEADS AND ACCOUNTS / ALL MY SAVED ACCOUNTS. Example: True
|
|
365
|
+
|
|
366
|
+
Returns:
|
|
367
|
+
A dictionary containing search results and pagination details.
|
|
368
|
+
|
|
369
|
+
Raises:
|
|
370
|
+
httpx.HTTPError: If the API request fails.
|
|
371
|
+
|
|
372
|
+
Tags:
|
|
373
|
+
linkedin, sales_navigator, companies, search, advanced, scraper, api, important
|
|
374
|
+
"""
|
|
375
|
+
return self._unipile_app.company_search(
|
|
376
|
+
account_id=self.account_id,
|
|
377
|
+
cursor=cursor,
|
|
378
|
+
limit=limit,
|
|
379
|
+
keywords=keywords,
|
|
380
|
+
last_viewed_at=last_viewed_at,
|
|
381
|
+
saved_search_id=saved_search_id,
|
|
382
|
+
recent_search_id=recent_search_id,
|
|
383
|
+
location=location,
|
|
384
|
+
location_by_postal_code=location_by_postal_code,
|
|
385
|
+
industry=industry,
|
|
386
|
+
company_headcount=company_headcount,
|
|
387
|
+
company_type=company_type,
|
|
388
|
+
company_location=company_location,
|
|
389
|
+
following_your_company=following_your_company,
|
|
390
|
+
account_lists=account_lists,
|
|
391
|
+
include_saved_accounts=include_saved_accounts,
|
|
392
|
+
)
|
|
393
|
+
|
|
394
|
+
def list_tools(self):
|
|
395
|
+
"""
|
|
396
|
+
Returns a list of available tools/functions in this application.
|
|
397
|
+
|
|
398
|
+
Returns:
|
|
399
|
+
A list of functions that can be used as tools.
|
|
400
|
+
"""
|
|
401
|
+
return [
|
|
402
|
+
self.linkedin_post_search,
|
|
403
|
+
self.linkedin_list_profile_posts,
|
|
404
|
+
self.linkedin_retrieve_profile,
|
|
405
|
+
self.linkedin_list_post_comments,
|
|
406
|
+
self.linkedin_people_search,
|
|
407
|
+
self.linkedin_company_search,
|
|
408
|
+
]
|