universal-mcp-applications 0.1.30rc1__tar.gz → 0.1.33__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.30rc1 → universal_mcp_applications-0.1.33}/PKG-INFO +1 -1
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/pyproject.toml +1 -1
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/scripts/run_docgen.py +1 -1
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_docs/app.py +6 -2
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_sheet/app.py +6 -2
- universal_mcp_applications-0.1.33/src/universal_mcp/applications/linkedin/README.md +29 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/linkedin/app.py +224 -97
- universal_mcp_applications-0.1.33/src/universal_mcp/applications/scraper/README.md +18 -0
- universal_mcp_applications-0.1.33/src/universal_mcp/applications/scraper/app.py +427 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/slack/app.py +31 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/uv.lock +9 -1
- universal_mcp_applications-0.1.30rc1/src/universal_mcp/applications/linkedin/README.md +0 -15
- universal_mcp_applications-0.1.30rc1/src/universal_mcp/applications/scraper/README.md +0 -15
- universal_mcp_applications-0.1.30rc1/src/universal_mcp/applications/scraper/app.py +0 -175
- universal_mcp_applications-0.1.30rc1/src/universal_mcp/applications/scraper/scraper_testers.py +0 -17
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/.gitignore +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/GEMINI.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/LICENSE +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/bump_and_release.sh +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/scripts/docgen.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/scripts/prompts.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/scripts/readme.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/tests/test_applications.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/BEST_PRACTICES.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ahrefs/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ahrefs/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ahrefs/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/airtable/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/airtable/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/airtable/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/apollo/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/apollo/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/apollo/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/asana/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/asana/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/asana/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/aws_s3/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/aws_s3/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/aws_s3/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/bill/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/bill/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/bill/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/box/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/box/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/box/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/braze/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/braze/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/braze/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/browser_use/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/browser_use/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/browser_use/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/cal_com_v2/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/cal_com_v2/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/cal_com_v2/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/calendly/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/calendly/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/calendly/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/canva/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/canva/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/canva/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/clickup/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/clickup/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/clickup/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/coda/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/coda/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/coda/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/confluence/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/confluence/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/confluence/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/contentful/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/contentful/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/contentful/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/crustdata/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/crustdata/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/crustdata/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/dialpad/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/dialpad/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/dialpad/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/digitalocean/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/digitalocean/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/digitalocean/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/domain_checker/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/domain_checker/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/domain_checker/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/e2b/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/e2b/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/e2b/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/elevenlabs/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/elevenlabs/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/elevenlabs/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/exa/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/exa/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/exa/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/falai/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/falai/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/falai/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/figma/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/figma/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/figma/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/file_system/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/file_system/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/file_system/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/firecrawl/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/firecrawl/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/firecrawl/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fireflies/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fireflies/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fireflies/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fpl/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fpl/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fpl/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fpl/utils/api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fpl/utils/fixtures.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fpl/utils/helper.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fpl/utils/league_utils.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/fpl/utils/position_utils.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ghost_content/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ghost_content/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ghost_content/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/github/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/github/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/github/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/gong/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/gong/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/gong/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_calendar/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_calendar/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_calendar/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_docs/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_docs/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_drive/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_drive/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_drive/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_gemini/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_gemini/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_gemini/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_mail/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_mail/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_mail/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_searchconsole/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_searchconsole/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_searchconsole/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_sheet/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_sheet/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/google_sheet/helper.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hashnode/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hashnode/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hashnode/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/heygen/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/heygen/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/heygen/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/http_tools/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/http_tools/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/http_tools/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hubspot/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hubspot/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hubspot/api_segments/api_segment_base.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hubspot/api_segments/crm_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hubspot/api_segments/marketing_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/hubspot/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/jira/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/jira/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/jira/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/klaviyo/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/klaviyo/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/klaviyo/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/linkedin/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/mailchimp/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/mailchimp/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/mailchimp/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/markitdown/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/markitdown/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/markitdown/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/miro/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/miro/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/miro/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ms_teams/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ms_teams/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/ms_teams/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/neon/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/neon/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/neon/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/notion/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/notion/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/notion/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/onedrive/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/onedrive/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/onedrive/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/openai/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/openai/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/openai/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/outlook/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/outlook/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/outlook/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/perplexity/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/perplexity/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/perplexity/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/pipedrive/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/pipedrive/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/pipedrive/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/posthog/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/posthog/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/posthog/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/reddit/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/reddit/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/reddit/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/resend/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/resend/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/resend/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/retell/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/retell/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/retell/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/rocketlane/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/rocketlane/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/rocketlane/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/scraper/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/semanticscholar/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/semanticscholar/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/semanticscholar/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/semrush/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/semrush/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/semrush/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sendgrid/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sendgrid/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sendgrid/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sentry/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sentry/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sentry/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/serpapi/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/serpapi/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/serpapi/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sharepoint/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sharepoint/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/sharepoint/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/shopify/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/shopify/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/shopify/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/shortcut/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/shortcut/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/shortcut/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/slack/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/slack/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/spotify/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/spotify/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/spotify/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/supabase/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/supabase/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/supabase/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/tavily/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/tavily/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/tavily/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/trello/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/trello/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/trello/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twilio/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twilio/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twilio/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/api_segment_base.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/compliance_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/dm_events_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/likes_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/lists_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/openapi_json_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/spaces_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/trends_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/tweets_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/usage_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/api_segments/users_api.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/twitter/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/whatsapp/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/whatsapp/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/whatsapp/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/whatsapp/audio.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/whatsapp/whatsapp.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/whatsapp_business/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/whatsapp_business/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/whatsapp_business/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/wrike/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/wrike/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/wrike/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/yahoo_finance/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/yahoo_finance/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/yahoo_finance/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/youtube/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/youtube/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/youtube/app.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/zenquotes/README.md +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/src/universal_mcp/applications/zenquotes/__init__.py +0 -0
- {universal_mcp_applications-0.1.30rc1 → universal_mcp_applications-0.1.33}/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.33
|
|
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
|
|
@@ -11,7 +11,7 @@ class GoogleDocsApp(APIApplication):
|
|
|
11
11
|
|
|
12
12
|
def create_document(self, title: str) -> dict[str, Any]:
|
|
13
13
|
"""
|
|
14
|
-
Creates a blank Google Document with a specified title by sending a POST request to the Google Docs API. The function returns a dictionary containing the new document's metadata, including the unique document ID required by other functions for subsequent modifications or retrieval.
|
|
14
|
+
Creates a blank Google Document with a specified title by sending a POST request to the Google Docs API. The function returns a dictionary containing the new document's metadata, including the unique document ID required by other functions for subsequent modifications or retrieval. Note that you need to call other google_docs functions (e.g. `google_docs__insert_text`) to actually add content after creating the document.
|
|
15
15
|
|
|
16
16
|
Args:
|
|
17
17
|
title: The title for the new Google Document to be created.
|
|
@@ -30,7 +30,11 @@ class GoogleDocsApp(APIApplication):
|
|
|
30
30
|
document_data = {"title": title}
|
|
31
31
|
response = self._post(url, data=document_data)
|
|
32
32
|
response.raise_for_status()
|
|
33
|
-
|
|
33
|
+
payload = response.json()
|
|
34
|
+
payload["Note"] = (
|
|
35
|
+
"You must load and call other google docs content functions (like google_docs__insert_text)"
|
|
36
|
+
)
|
|
37
|
+
return payload
|
|
34
38
|
|
|
35
39
|
def get_document(self, document_id: str) -> dict[str, Any]:
|
|
36
40
|
"""
|
|
@@ -21,7 +21,7 @@ class GoogleSheetApp(APIApplication):
|
|
|
21
21
|
|
|
22
22
|
def create_spreadsheet(self, title: str) -> dict[str, Any]:
|
|
23
23
|
"""
|
|
24
|
-
Creates a new, blank Google Spreadsheet file with a specified title. This function generates a completely new document, unlike `add_sheet` which adds a worksheet (tab) to an existing spreadsheet. It returns the API response containing the new spreadsheet's metadata.
|
|
24
|
+
Creates a new, blank Google Spreadsheet file with a specified title. This function generates a completely new document, unlike `add_sheet` which adds a worksheet (tab) to an existing spreadsheet. It returns the API response containing the new spreadsheet's metadata. Note that you need to call other google_sheet functions (e.g. `google_sheet__write_values_to_sheet`) to actually add content after creating the spreadsheet.
|
|
25
25
|
|
|
26
26
|
Args:
|
|
27
27
|
title: String representing the desired title for the new spreadsheet
|
|
@@ -39,7 +39,11 @@ class GoogleSheetApp(APIApplication):
|
|
|
39
39
|
url = self.base_url
|
|
40
40
|
spreadsheet_data = {"properties": {"title": title}}
|
|
41
41
|
response = self._post(url, data=spreadsheet_data)
|
|
42
|
-
|
|
42
|
+
payload = self._handle_response(response)
|
|
43
|
+
payload["Note"] = (
|
|
44
|
+
"You must load and call other google_sheet content functions (like `google_sheet__write_values_to_sheet`)"
|
|
45
|
+
)
|
|
46
|
+
return payload
|
|
43
47
|
|
|
44
48
|
def get_spreadsheet_metadata(self, spreadsheetId: str) -> dict[str, Any]:
|
|
45
49
|
"""
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# LinkedinApp MCP Server
|
|
2
|
+
|
|
3
|
+
An MCP Server for the LinkedinApp API.
|
|
4
|
+
|
|
5
|
+
## 🛠️ Tool List
|
|
6
|
+
|
|
7
|
+
This is automatically generated from OpenAPI schema for the LinkedinApp API.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
| Tool | Description |
|
|
11
|
+
|------|-------------|
|
|
12
|
+
| `list_all_chats` | Retrieves a paginated list of all chat conversations across linked accounts. Supports filtering by unread status, date range, and account provider, distinguishing it from functions listing messages within a single chat. |
|
|
13
|
+
| `list_chat_messages` | Retrieves messages from a specific chat identified by `chat_id`. Supports pagination and filtering by date or sender. Unlike `list_all_messages`, which fetches from all chats, this function targets the contents of a single conversation. |
|
|
14
|
+
| `send_chat_message` | Sends a text message to a specific chat conversation using its `chat_id`. This function creates a new message via a POST request, distinguishing it from read-only functions like `list_chat_messages`. It returns the API's response, which typically confirms the successful creation of the message. |
|
|
15
|
+
| `retrieve_chat` | Retrieves a single chat's details using its Unipile or provider-specific ID. This function is distinct from `list_all_chats`, which returns a collection, by targeting one specific conversation. |
|
|
16
|
+
| `list_all_messages` | Retrieves a paginated list of messages from all chats associated with the account. Unlike `list_chat_messages` which targets a specific conversation, this function provides a global message view, filterable by sender and date range. |
|
|
17
|
+
| `list_profile_posts` | Retrieves a paginated list of posts from a specific user or company profile using their provider ID. An authorizing `account_id` is required, and the `is_company` flag must specify the entity type, distinguishing this from `retrieve_post` which fetches a single post by its own ID. |
|
|
18
|
+
| `retrieve_own_profile` | Retrieves the profile details for the user associated with the Unipile account. This function targets the API's 'me' endpoint to fetch the authenticated user's profile, distinct from `retrieve_user_profile` which fetches profiles of other users by their public identifier. |
|
|
19
|
+
| `retrieve_user_profile` | Retrieves a specific LinkedIn user's profile using their public or internal ID. Unlike `retrieve_own_profile`, which fetches the authenticated user's details, this function targets and returns data for any specified third-party user profile on the platform. |
|
|
20
|
+
| `retrieve_post` | Fetches a specific post's details by its unique ID. Unlike `list_profile_posts`, which retrieves a collection of posts from a user or company profile, this function targets one specific post and returns its full object. |
|
|
21
|
+
| `list_post_comments` | Fetches comments for a specific post. Providing an optional `comment_id` retrieves threaded replies instead of top-level comments. This read-only operation contrasts with `create_post_comment`, which publishes new comments, and `list_content_reactions`, which retrieves 'likes'. |
|
|
22
|
+
| `create_post` | Publishes a new top-level post from the account, including text, user mentions, and an external link. This function creates original content, distinguishing it from `create_post_comment` which adds replies to existing posts. |
|
|
23
|
+
| `list_content_reactions` | Retrieves a paginated list of reactions for a given post or, optionally, a specific comment. This read-only operation uses the account for the request, distinguishing it from the `create_reaction` function which adds new reactions. |
|
|
24
|
+
| `create_post_comment` | Publishes a comment on a specified post. By providing an optional `comment_id`, it creates a threaded reply to an existing comment instead of a new top-level one. This function's dual capability distinguishes it from `list_post_comments`, which only retrieves comments and their replies. |
|
|
25
|
+
| `create_reaction` | Adds a specified reaction (e.g., 'like', 'love') to a LinkedIn post or, optionally, to a specific comment. This function performs a POST request to create the reaction, differentiating it from `list_content_reactions` which only retrieves existing ones. |
|
|
26
|
+
| `search_companies` | Performs a paginated search for companies on LinkedIn using keywords, with optional location and industry filters. Its specific 'companies' search category distinguishes it from other methods like `search_people` or `search_posts`, ensuring that only company profiles are returned. |
|
|
27
|
+
| `search_jobs` | Performs a LinkedIn search for jobs, filtering results by keywords, region, industry, and minimum salary. Unlike other search functions (`search_people`, `search_companies`), this method is specifically configured to query the 'jobs' category, providing a paginated list of relevant employment opportunities. |
|
|
28
|
+
| `search_people` | Searches for LinkedIn user profiles using keywords, with optional filters for location, industry, and company. This function specifically targets the 'people' category, distinguishing it from other search methods like `search_companies` or `search_jobs` that query different entity types through the same API endpoint. |
|
|
29
|
+
| `search_posts` | Performs a keyword-based search for LinkedIn posts, allowing filters for date and sorting by relevance. This function executes a general, platform-wide content search, distinguishing it from other search functions that target people, companies, or jobs, and from `list_profile_posts` which retrieves from a specific profile. |
|
|
@@ -78,6 +78,38 @@ class LinkedinApp(APIApplication):
|
|
|
78
78
|
"Cache-Control": "no-cache", # Often good practice for APIs
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
def _get_search_parameter_id(self, param_type: str, keywords: str) -> str:
|
|
82
|
+
"""
|
|
83
|
+
Retrieves the ID for a given LinkedIn search parameter by its name.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
param_type: The type of parameter to search for (e.g., "LOCATION", "COMPANY").
|
|
87
|
+
keywords: The name of the parameter to find (e.g., "United States").
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
The corresponding ID for the search parameter.
|
|
91
|
+
|
|
92
|
+
Raises:
|
|
93
|
+
ValueError: If no exact match for the keywords is found.
|
|
94
|
+
httpx.HTTPError: If the API request fails.
|
|
95
|
+
"""
|
|
96
|
+
url = f"{self.base_url}/api/v1/linkedin/search/parameters"
|
|
97
|
+
params = {
|
|
98
|
+
"account_id": self.account_id,
|
|
99
|
+
"keywords": keywords,
|
|
100
|
+
"type": param_type,
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
response = self._get(url, params=params)
|
|
104
|
+
results = self._handle_response(response)
|
|
105
|
+
|
|
106
|
+
items = results.get("items", [])
|
|
107
|
+
if items:
|
|
108
|
+
# Return the ID of the first result, assuming it's the most relevant
|
|
109
|
+
return items[0]["id"]
|
|
110
|
+
|
|
111
|
+
raise ValueError(f'Could not find a matching ID for {param_type}: "{keywords}"')
|
|
112
|
+
|
|
81
113
|
def list_all_chats(
|
|
82
114
|
self,
|
|
83
115
|
unread: bool | None = None,
|
|
@@ -271,54 +303,6 @@ class LinkedinApp(APIApplication):
|
|
|
271
303
|
response = self._get(url, params=params)
|
|
272
304
|
return response.json()
|
|
273
305
|
|
|
274
|
-
def list_all_accounts(
|
|
275
|
-
self,
|
|
276
|
-
cursor: str | None = None,
|
|
277
|
-
limit: int | None = None, # 1-259 according to spec
|
|
278
|
-
) -> dict[str, Any]:
|
|
279
|
-
"""
|
|
280
|
-
Retrieves a paginated list of all social media accounts linked to the Unipile service. This is crucial for obtaining the `account_id` required by other methods to specify which user account should perform an action, like sending a message or retrieving user-specific posts.
|
|
281
|
-
|
|
282
|
-
Args:
|
|
283
|
-
cursor: Pagination cursor.
|
|
284
|
-
limit: Number of items to return (1-259).
|
|
285
|
-
|
|
286
|
-
Returns:
|
|
287
|
-
A dictionary containing a list of account objects and a pagination cursor.
|
|
288
|
-
|
|
289
|
-
Raises:
|
|
290
|
-
httpx.HTTPError: If the API request fails.
|
|
291
|
-
|
|
292
|
-
Tags:
|
|
293
|
-
linkedin, account, list, unipile, api, important
|
|
294
|
-
"""
|
|
295
|
-
url = f"{self.base_url}/api/v1/accounts"
|
|
296
|
-
params: dict[str, Any] = {}
|
|
297
|
-
if cursor:
|
|
298
|
-
params["cursor"] = cursor
|
|
299
|
-
if limit:
|
|
300
|
-
params["limit"] = limit
|
|
301
|
-
|
|
302
|
-
response = self._get(url, params=params)
|
|
303
|
-
return response.json()
|
|
304
|
-
|
|
305
|
-
# def retrieve_linked_account(self) -> dict[str, Any]:
|
|
306
|
-
# """
|
|
307
|
-
# Retrieves details for the account linked to Unipile. It fetches metadata about the connection itself (e.g., a linked LinkedIn account), differentiating it from `retrieve_user_profile` which fetches a user's profile from the external platform.
|
|
308
|
-
|
|
309
|
-
# Returns:
|
|
310
|
-
# A dictionary containing the account object details.
|
|
311
|
-
|
|
312
|
-
# Raises:
|
|
313
|
-
# httpx.HTTPError: If the API request fails.
|
|
314
|
-
|
|
315
|
-
# Tags:
|
|
316
|
-
# linkedin, account, retrieve, get, unipile, api, important
|
|
317
|
-
# """
|
|
318
|
-
# url = f"{self.base_url}/api/v1/accounts/{self.account_id}"
|
|
319
|
-
# response = self._get(url)
|
|
320
|
-
# return response.json()
|
|
321
|
-
|
|
322
306
|
def list_profile_posts(
|
|
323
307
|
self,
|
|
324
308
|
identifier: str, # User or Company provider internal ID
|
|
@@ -602,43 +586,53 @@ class LinkedinApp(APIApplication):
|
|
|
602
586
|
"message": "Reaction action processed.",
|
|
603
587
|
}
|
|
604
588
|
|
|
605
|
-
def
|
|
589
|
+
def retrieve_user_profile(self, identifier: str) -> dict[str, Any]:
|
|
590
|
+
"""
|
|
591
|
+
Retrieves a specific LinkedIn user's profile using their public or internal ID. Unlike `retrieve_own_profile`, which fetches the authenticated user's details, this function targets and returns data for any specified third-party user profile on the platform.
|
|
592
|
+
|
|
593
|
+
Args:
|
|
594
|
+
identifier: Can be the provider's internal id OR the provider's public id of the requested user.For example, for https://www.linkedin.com/in/manojbajaj95/, the identifier is "manojbajaj95".
|
|
595
|
+
|
|
596
|
+
Returns:
|
|
597
|
+
A dictionary containing the user's profile details.
|
|
598
|
+
|
|
599
|
+
Raises:
|
|
600
|
+
httpx.HTTPError: If the API request fails.
|
|
601
|
+
|
|
602
|
+
Tags:
|
|
603
|
+
linkedin, user, profile, retrieve, get, api, important
|
|
604
|
+
"""
|
|
605
|
+
url = f"{self.base_url}/api/v1/users/{identifier}"
|
|
606
|
+
params: dict[str, Any] = {"account_id": self.account_id}
|
|
607
|
+
response = self._get(url, params=params)
|
|
608
|
+
return self._handle_response(response)
|
|
609
|
+
|
|
610
|
+
def search_people(
|
|
606
611
|
self,
|
|
607
|
-
category: Literal["people", "companies", "posts", "jobs"],
|
|
608
612
|
cursor: str | None = None,
|
|
609
613
|
limit: int | None = None,
|
|
610
614
|
keywords: str | None = None,
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
615
|
+
location: str | None = None,
|
|
616
|
+
industry: str | None = None,
|
|
617
|
+
company: str | None = None,
|
|
614
618
|
) -> dict[str, Any]:
|
|
615
619
|
"""
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
For people, companies, and jobs, it uses the classic API.
|
|
619
|
-
|
|
620
|
+
Searches for LinkedIn user profiles using keywords, with optional filters for location, industry, and company. This function specifically targets the 'people' category, distinguishing it from other search methods like `search_companies` or `search_jobs` that query different entity types through the same API endpoint.
|
|
621
|
+
|
|
620
622
|
Args:
|
|
621
|
-
category: Type of search to perform. Valid values are "people", "companies", "posts", or "jobs".
|
|
622
623
|
cursor: Pagination cursor for the next page of entries.
|
|
623
624
|
limit: Number of items to return (up to 50 for Classic search).
|
|
624
625
|
keywords: Keywords to search for.
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
626
|
+
location: The geographical location to filter people by (e.g., "United States").
|
|
627
|
+
industry: The industry to filter people by.(eg., "Information Technology and Services").
|
|
628
|
+
company: The company to filter people by.(e.g., "Google").
|
|
629
|
+
|
|
629
630
|
Returns:
|
|
630
631
|
A dictionary containing search results and pagination details.
|
|
631
|
-
|
|
632
|
+
|
|
632
633
|
Raises:
|
|
633
634
|
httpx.HTTPError: If the API request fails.
|
|
634
|
-
ValueError: If the category is empty.
|
|
635
|
-
|
|
636
|
-
Tags:
|
|
637
|
-
linkedin, search, people, companies, posts, jobs, api, important
|
|
638
635
|
"""
|
|
639
|
-
if not category:
|
|
640
|
-
raise ValueError("Category cannot be empty.")
|
|
641
|
-
|
|
642
636
|
url = f"{self.base_url}/api/v1/linkedin/search"
|
|
643
637
|
|
|
644
638
|
params: dict[str, Any] = {"account_id": self.account_id}
|
|
@@ -647,47 +641,179 @@ class LinkedinApp(APIApplication):
|
|
|
647
641
|
if limit is not None:
|
|
648
642
|
params["limit"] = limit
|
|
649
643
|
|
|
650
|
-
payload: dict[str, Any] = {"api": "classic", "category":
|
|
644
|
+
payload: dict[str, Any] = {"api": "classic", "category": "people"}
|
|
651
645
|
|
|
652
646
|
if keywords:
|
|
653
647
|
payload["keywords"] = keywords
|
|
648
|
+
|
|
649
|
+
if location:
|
|
650
|
+
location_id = self._get_search_parameter_id("LOCATION", location)
|
|
651
|
+
payload["location"] = [location_id]
|
|
654
652
|
|
|
655
|
-
if
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
653
|
+
if industry:
|
|
654
|
+
industry_id = self._get_search_parameter_id("INDUSTRY", industry)
|
|
655
|
+
payload["industry"] = [industry_id]
|
|
656
|
+
|
|
657
|
+
if company:
|
|
658
|
+
company_id = self._get_search_parameter_id("COMPANY", company)
|
|
659
|
+
payload["company"] = [company_id]
|
|
660
|
+
|
|
661
|
+
response = self._post(url, params=params, data=payload)
|
|
662
|
+
return self._handle_response(response)
|
|
660
663
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
664
|
+
def search_companies(
|
|
665
|
+
self,
|
|
666
|
+
cursor: str | None = None,
|
|
667
|
+
limit: int | None = None,
|
|
668
|
+
keywords: str | None = None,
|
|
669
|
+
location: str | None = None,
|
|
670
|
+
industry: str | None = None,
|
|
671
|
+
) -> dict[str, Any]:
|
|
672
|
+
"""
|
|
673
|
+
Performs a paginated search for companies on LinkedIn using keywords, with optional location and industry filters. Its specific 'companies' search category distinguishes it from other methods like `search_people` or `search_posts`, ensuring that only company profiles are returned.
|
|
674
|
+
|
|
675
|
+
Args:
|
|
676
|
+
cursor: Pagination cursor for the next page of entries.
|
|
677
|
+
limit: Number of items to return (up to 50 for Classic search).
|
|
678
|
+
keywords: Keywords to search for.
|
|
679
|
+
location: The geographical location to filter companies by (e.g., "United States").
|
|
680
|
+
industry: The industry to filter companies by.(e.g., "Information Technology and Services").
|
|
681
|
+
|
|
682
|
+
Returns:
|
|
683
|
+
A dictionary containing search results and pagination details.
|
|
684
|
+
|
|
685
|
+
Raises:
|
|
686
|
+
httpx.HTTPError: If the API request fails.
|
|
687
|
+
"""
|
|
688
|
+
url = f"{self.base_url}/api/v1/linkedin/search"
|
|
689
|
+
|
|
690
|
+
params: dict[str, Any] = {"account_id": self.account_id}
|
|
691
|
+
if cursor:
|
|
692
|
+
params["cursor"] = cursor
|
|
693
|
+
if limit is not None:
|
|
694
|
+
params["limit"] = limit
|
|
695
|
+
|
|
696
|
+
payload: dict[str, Any] = {"api": "classic", "category": "companies"}
|
|
697
|
+
|
|
698
|
+
if keywords:
|
|
699
|
+
payload["keywords"] = keywords
|
|
700
|
+
|
|
701
|
+
if location:
|
|
702
|
+
location_id = self._get_search_parameter_id("LOCATION", location)
|
|
703
|
+
payload["location"] = [location_id]
|
|
704
|
+
|
|
705
|
+
if industry:
|
|
706
|
+
industry_id = self._get_search_parameter_id("INDUSTRY", industry)
|
|
707
|
+
payload["industry"] = [industry_id]
|
|
668
708
|
|
|
669
709
|
response = self._post(url, params=params, data=payload)
|
|
670
710
|
return self._handle_response(response)
|
|
671
711
|
|
|
672
|
-
def
|
|
712
|
+
def search_posts(
|
|
713
|
+
self,
|
|
714
|
+
cursor: str | None = None,
|
|
715
|
+
limit: int | None = None,
|
|
716
|
+
keywords: str | None = None,
|
|
717
|
+
date_posted: Literal["past_day", "past_week", "past_month"] | None = None,
|
|
718
|
+
sort_by: Literal["relevance", "date"] = "relevance",
|
|
719
|
+
) -> dict[str, Any]:
|
|
673
720
|
"""
|
|
674
|
-
|
|
675
|
-
|
|
721
|
+
Performs a keyword-based search for LinkedIn posts, allowing filters for date and sorting by relevance. This function executes a general, platform-wide content search, distinguishing it from other search functions that target people, companies, or jobs, and from `list_profile_posts` which retrieves from a specific profile.
|
|
722
|
+
|
|
676
723
|
Args:
|
|
677
|
-
|
|
678
|
-
|
|
724
|
+
cursor: Pagination cursor for the next page of entries.
|
|
725
|
+
limit: Number of items to return (up to 50 for Classic search).
|
|
726
|
+
keywords: Keywords to search for.
|
|
727
|
+
date_posted: Filter by when the post was posted.
|
|
728
|
+
sort_by: How to sort the results.
|
|
729
|
+
|
|
679
730
|
Returns:
|
|
680
|
-
A dictionary containing
|
|
681
|
-
|
|
731
|
+
A dictionary containing search results and pagination details.
|
|
732
|
+
|
|
682
733
|
Raises:
|
|
683
734
|
httpx.HTTPError: If the API request fails.
|
|
735
|
+
"""
|
|
736
|
+
url = f"{self.base_url}/api/v1/linkedin/search"
|
|
684
737
|
|
|
685
|
-
|
|
686
|
-
|
|
738
|
+
params: dict[str, Any] = {"account_id": self.account_id}
|
|
739
|
+
if cursor:
|
|
740
|
+
params["cursor"] = cursor
|
|
741
|
+
if limit is not None:
|
|
742
|
+
params["limit"] = limit
|
|
743
|
+
|
|
744
|
+
payload: dict[str, Any] = {"api": "classic", "category": "posts"}
|
|
745
|
+
|
|
746
|
+
if keywords:
|
|
747
|
+
payload["keywords"] = keywords
|
|
748
|
+
if date_posted:
|
|
749
|
+
payload["date_posted"] = date_posted
|
|
750
|
+
if sort_by:
|
|
751
|
+
payload["sort_by"] = sort_by
|
|
752
|
+
|
|
753
|
+
response = self._post(url, params=params, data=payload)
|
|
754
|
+
return self._handle_response(response)
|
|
755
|
+
|
|
756
|
+
def search_jobs(
|
|
757
|
+
self,
|
|
758
|
+
cursor: str | None = None,
|
|
759
|
+
limit: int | None = None,
|
|
760
|
+
keywords: str | None = None,
|
|
761
|
+
region: str | None = None,
|
|
762
|
+
sort_by: Literal["relevance", "date"] = "relevance",
|
|
763
|
+
minimum_salary_value: int = 40,
|
|
764
|
+
industry: str | None = None,
|
|
765
|
+
) -> dict[str, Any]:
|
|
687
766
|
"""
|
|
688
|
-
|
|
767
|
+
Performs a LinkedIn search for jobs, filtering results by keywords, region, industry, and minimum salary. Unlike other search functions (`search_people`, `search_companies`), this method is specifically configured to query the 'jobs' category, providing a paginated list of relevant employment opportunities.
|
|
768
|
+
|
|
769
|
+
Args:
|
|
770
|
+
cursor: Pagination cursor for the next page of entries.
|
|
771
|
+
limit: Number of items to return (up to 50 for Classic search).
|
|
772
|
+
keywords: Keywords to search for.
|
|
773
|
+
region: The geographical region to filter jobs by (e.g., "United States").
|
|
774
|
+
sort_by: How to sort the results.(e.g., "relevance" or "date".)
|
|
775
|
+
minimum_salary_value: The minimum salary to filter for.
|
|
776
|
+
industry: The industry to filter jobs by.(e.g., "Software Development").
|
|
777
|
+
|
|
778
|
+
Returns:
|
|
779
|
+
A dictionary containing search results and pagination details.
|
|
780
|
+
|
|
781
|
+
Raises:
|
|
782
|
+
httpx.HTTPError: If the API request fails.
|
|
783
|
+
ValueError: If the specified location is not found.
|
|
784
|
+
"""
|
|
785
|
+
url = f"{self.base_url}/api/v1/linkedin/search"
|
|
786
|
+
|
|
689
787
|
params: dict[str, Any] = {"account_id": self.account_id}
|
|
690
|
-
|
|
788
|
+
if cursor:
|
|
789
|
+
params["cursor"] = cursor
|
|
790
|
+
if limit is not None:
|
|
791
|
+
params["limit"] = limit
|
|
792
|
+
|
|
793
|
+
payload: dict[str, Any] = {
|
|
794
|
+
"api": "classic",
|
|
795
|
+
"category": "jobs",
|
|
796
|
+
"minimum_salary": {
|
|
797
|
+
"currency": "USD",
|
|
798
|
+
"value": minimum_salary_value,
|
|
799
|
+
},
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
if keywords:
|
|
803
|
+
payload["keywords"] = keywords
|
|
804
|
+
if sort_by:
|
|
805
|
+
payload["sort_by"] = sort_by
|
|
806
|
+
|
|
807
|
+
# If location is provided, get its ID and add it to the payload
|
|
808
|
+
if region:
|
|
809
|
+
location_id = self._get_search_parameter_id("LOCATION", region)
|
|
810
|
+
payload["region"] = location_id
|
|
811
|
+
|
|
812
|
+
if industry:
|
|
813
|
+
industry_id = self._get_search_parameter_id("INDUSTRY", industry)
|
|
814
|
+
payload["industry"] = [industry_id]
|
|
815
|
+
|
|
816
|
+
response = self._post(url, params=params, data=payload)
|
|
691
817
|
return self._handle_response(response)
|
|
692
818
|
|
|
693
819
|
def list_tools(self) -> list[Callable]:
|
|
@@ -697,8 +823,6 @@ class LinkedinApp(APIApplication):
|
|
|
697
823
|
self.send_chat_message,
|
|
698
824
|
self.retrieve_chat,
|
|
699
825
|
self.list_all_messages,
|
|
700
|
-
self.list_all_accounts,
|
|
701
|
-
# self.retrieve_linked_account,
|
|
702
826
|
self.list_profile_posts,
|
|
703
827
|
self.retrieve_own_profile,
|
|
704
828
|
self.retrieve_user_profile,
|
|
@@ -708,5 +832,8 @@ class LinkedinApp(APIApplication):
|
|
|
708
832
|
self.list_content_reactions,
|
|
709
833
|
self.create_post_comment,
|
|
710
834
|
self.create_reaction,
|
|
711
|
-
self.
|
|
835
|
+
self.search_companies,
|
|
836
|
+
self.search_jobs,
|
|
837
|
+
self.search_people,
|
|
838
|
+
self.search_posts,
|
|
712
839
|
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# ScraperApp MCP Server
|
|
2
|
+
|
|
3
|
+
An MCP Server for the ScraperApp API.
|
|
4
|
+
|
|
5
|
+
## 🛠️ Tool List
|
|
6
|
+
|
|
7
|
+
This is automatically generated from OpenAPI schema for the ScraperApp API.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
| Tool | Description |
|
|
11
|
+
|------|-------------|
|
|
12
|
+
| `linkedin_list_profile_posts` | Fetches a paginated list of posts from a specific user or company profile using its provider ID. The `is_company` flag must specify the entity type. Unlike `linkedin_search_posts`, this function directly retrieves content from a known profile's feed instead of performing a global keyword search. |
|
|
13
|
+
| `linkedin_retrieve_profile` | Fetches a specific LinkedIn user's profile using their public or internal ID. Unlike `linkedin_search_people`, which discovers multiple users via keywords, this function targets and retrieves detailed data for a single, known individual based on a direct identifier. |
|
|
14
|
+
| `linkedin_list_post_comments` | Fetches a paginated list of comments for a specified LinkedIn post. It can retrieve either top-level comments or threaded replies if an optional `comment_id` is provided. This is a read-only operation, distinct from functions that search for posts or list user-specific content. |
|
|
15
|
+
| `linkedin_search_people` | Performs a paginated search for people on LinkedIn, distinct from searches for companies or jobs. It filters results using keywords, location, industry, and company, internally converting filter names like 'United States' into their required API IDs before making the request. |
|
|
16
|
+
| `linkedin_search_companies` | Executes a paginated LinkedIn search for companies, filtering by optional keywords, location, and industry. Unlike `linkedin_search_people` or `linkedin_search_jobs`, this function specifically sets the API search category to 'companies' to ensure that only company profiles are returned in the search results. |
|
|
17
|
+
| `linkedin_search_posts` | Performs a keyword-based search for LinkedIn posts, allowing results to be filtered by date and sorted by relevance. This function specifically queries the 'posts' category, distinguishing it from other search methods in the class that target people, companies, or jobs, and returns relevant content. |
|
|
18
|
+
| `linkedin_search_jobs` | Executes a LinkedIn search specifically for job listings using keywords and filters like region, industry, and minimum salary. Unlike other search functions targeting people or companies, this is specialized for job listings and converts friendly filter names (e.g., "United States") into their required API IDs. |
|