@scavio/mcp-server
Advanced tools
+49
-227
| import { z } from "zod"; | ||
| import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; | ||
| import { ApiError } from "../lib/errors.js"; | ||
| // The provider retired the `linkedin/web/*` namespace these tools were built on. | ||
| // The nine below run on `web_v2`: every reference is a vanity handle, slug or id | ||
| // (a full LinkedIn URL also works anywhere), and all cost 1 credit. | ||
| // | ||
| // Five tools were removed rather than left registered - person_contact, | ||
| // company_people, company_jobs, search_people and search_posts have no upstream | ||
| // and can only return 410. Unlike an SDK method, an MCP tool is a menu item for | ||
| // a model: one that always fails burns turns and invites retries, so it is | ||
| // better absent. The REST API still answers those paths with an explicit 410. | ||
| function handleApiError(err) { | ||
@@ -14,19 +23,24 @@ if (err instanceof ApiError) { | ||
| } | ||
| const personRef = { | ||
| username: z.string().min(1).optional() | ||
| .describe("Public identifier (vanity handle), e.g. 'williamhgates'."), | ||
| url: z.string().url().optional() | ||
| .describe("Full LinkedIn profile URL, as an alternative to username."), | ||
| }; | ||
| const companyRef = { | ||
| company: z.string().min(1).optional() | ||
| .describe("Company universal name (slug), e.g. 'microsoft'."), | ||
| url: z.string().url().optional() | ||
| .describe("Full LinkedIn company URL, as an alternative to company."), | ||
| }; | ||
| const postRef = { | ||
| post_id: z.string().min(1).optional() | ||
| .describe("Post id or activity urn, e.g. '7488618410256523265'."), | ||
| url: z.string().url().optional() | ||
| .describe("Full LinkedIn post URL, as an alternative to post_id."), | ||
| }; | ||
| export function registerLinkedinTools(server, getClient) { | ||
| server.tool("get_linkedin_person", `Get a LinkedIn member's full profile as JSON. Returns the member urn, public identifier, name, headline, location, premium/open-to-work/hiring flags, avatar, about, experiences, educations, skills, and follower/connection counts. Accepts the public identifier (vanity handle). Costs 4 credits.`, { | ||
| username: z.string().min(1) | ||
| .describe("Public identifier (vanity handle), e.g. 'williamhgates'."), | ||
| include_experiences: z.boolean().optional() | ||
| .describe("Include the work experience section (default true)."), | ||
| include_educations: z.boolean().optional() | ||
| .describe("Include the education section (default true)."), | ||
| include_skills: z.boolean().optional() | ||
| .describe("Include the skills section (default true)."), | ||
| include_certifications: z.boolean().optional() | ||
| .describe("Include the certifications section (default true)."), | ||
| include_follower_and_connection: z.boolean().optional() | ||
| .describe("Include follower and connection counts (default true)."), | ||
| }, async (params) => { | ||
| const call = (path) => async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/person", params); | ||
| const data = await getClient().post(path, params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
@@ -37,216 +51,24 @@ } | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_person_about", `Get about/overview metadata for a LinkedIn member as JSON, including join date, contact information, and profile photo. Provide the member urn, or a username that will be resolved to a urn. Costs 4 credits.`, { | ||
| urn: z.string().min(1).optional() | ||
| .describe("Member urn, e.g. 'ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc'."), | ||
| username: z.string().min(1).optional() | ||
| .describe("Public identifier; resolved to a urn if urn is omitted, e.g. 'williamhgates'."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/person/about", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_person_posts", `List a LinkedIn member's recent posts as JSON. Each post includes its ID, type, text, content (images, video, article, poll), and activity counts (likes, comments, shares). Provide the member urn or a username. Use data.next_cursor as the next cursor while has_more is true. Costs 4 credits.`, { | ||
| urn: z.string().min(1).optional() | ||
| .describe("Member urn, e.g. 'ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc'."), | ||
| username: z.string().min(1).optional() | ||
| .describe("Public identifier; resolved if urn is omitted, e.g. 'williamhgates'."), | ||
| cursor: z.string().optional() | ||
| .describe("Pagination cursor (next_cursor) from a previous response."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/person/posts", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_person_contact", `Get a LinkedIn member's public contact information as JSON. Accepts the public identifier (vanity handle). Costs 4 credits.`, { | ||
| username: z.string().min(1) | ||
| .describe("Public identifier (vanity handle), e.g. 'williamhgates'."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/person/contact", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_company", `Get a LinkedIn company's profile as JSON. Accepts the company universal name (slug) or a LinkedIn company URL. Costs 1 credit.`, { | ||
| company: z.string().min(1) | ||
| .describe("Company universal name (slug) or LinkedIn company URL, e.g. 'microsoft'."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/company", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_company_posts", `List a LinkedIn company's recent posts as JSON. Accepts the company slug or URL. Use data.next_cursor as the next cursor while has_more is true. Costs 1 credit.`, { | ||
| company: z.string().min(1) | ||
| .describe("Company universal name (slug) or LinkedIn company URL, e.g. 'microsoft'."), | ||
| cursor: z.string().optional() | ||
| .describe("Pagination cursor (next_cursor) from a previous response."), | ||
| count: z.number().int().positive().max(100).optional() | ||
| .describe("Number of posts to return per page (max 100)."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/company/posts", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_company_people", `List people who work at a LinkedIn company as JSON. Provide the numeric company_id, or a company slug/url that will be resolved to a company_id. Use data.next_cursor as the next cursor while has_more is true. Costs 4 credits.`, { | ||
| company_id: z.string().min(1).optional() | ||
| .describe("Numeric company id, e.g. '1035'."), | ||
| company: z.string().min(1).optional() | ||
| .describe("Company slug/url; resolved to a company_id if company_id is omitted, e.g. 'microsoft'."), | ||
| cursor: z.string().optional() | ||
| .describe("Pagination cursor (next_cursor) from a previous response."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/company/people", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_company_jobs", `List a LinkedIn company's open job listings as JSON. Provide the numeric company_id, or a company slug/url that will be resolved to a company_id. Use data.next_cursor as the next cursor while has_more is true. Costs 4 credits.`, { | ||
| company_id: z.string().min(1).optional() | ||
| .describe("Numeric company id, e.g. '1035'."), | ||
| company: z.string().min(1).optional() | ||
| .describe("Company slug/url; resolved to a company_id if company_id is omitted, e.g. 'microsoft'."), | ||
| cursor: z.string().optional() | ||
| .describe("Pagination cursor (next_cursor) from a previous response."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/company/jobs", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("search_linkedin_people", `Search LinkedIn for people as JSON. Filter by name, title, company, or school, and optionally location. Each result includes the member urn, profile URL, public identifier, name, title, location, and verified/premium/open-to-work/hiring flags. Provide at least one of search, title, company, or school. Use data.next_cursor as the next cursor while has_more is true. Costs 4 credits.`, { | ||
| search: z.string().min(1).optional() | ||
| .describe("Name to search for, e.g. 'john'."), | ||
| title: z.string().optional() | ||
| .describe("Job title filter, e.g. 'engineer'."), | ||
| company: z.string().optional() | ||
| .describe("Company filter."), | ||
| school: z.string().optional() | ||
| .describe("School filter."), | ||
| }; | ||
| server.tool("get_linkedin_person", `Get a LinkedIn member's full profile as JSON: name, headline, about text, location, avatar, banner, follower and connection counts, current company, full work experience (including grouped multi-role entries), education, honours, bio links and similar profiles. Provide a vanity handle or a full profile URL. Costs 1 credit.`, personRef, call("/api/v1/linkedin/person")); | ||
| server.tool("get_linkedin_person_about", `Get the about/overview slice of a LinkedIn member's profile as JSON: about text, headline, work experience, education, honours and bio links. Use this instead of get_linkedin_person when you only need the narrative sections. Provide a vanity handle or a full profile URL. Costs 1 credit.`, personRef, call("/api/v1/linkedin/person/about")); | ||
| server.tool("get_linkedin_person_posts", `Get a LinkedIn member's recent posts as JSON, each with text, url, timestamps, a full reaction breakdown (likes, appreciations, empathy, interest, praise), comment and repost counts, attached images, article metadata and the author. Returns up to 50 posts; the provider exposes no further pages, so there is no cursor. Provide a vanity handle or a full profile URL. Costs 1 credit.`, personRef, call("/api/v1/linkedin/person/posts")); | ||
| server.tool("get_linkedin_company", `Get a LinkedIn company profile as JSON: name, about, description, website, industries, specialties, company size, employee and follower counts, headquarters, all office locations, logo, a small sample of featured employees, similar and affiliated companies, and recent updates. Provide a company slug or a full company URL. Costs 1 credit.`, companyRef, call("/api/v1/linkedin/company")); | ||
| server.tool("get_linkedin_company_posts", `Get a LinkedIn company's recent posts as JSON, in the same shape as member posts (text, url, reaction breakdown, comment and repost counts, images, author). Returns up to 50 posts; the provider exposes no further pages, so there is no cursor. Provide a company slug or a full company URL. Costs 1 credit.`, companyRef, call("/api/v1/linkedin/company/posts")); | ||
| server.tool("search_linkedin_jobs", `Search LinkedIn job listings by keyword as JSON, returning title, company, company URL and logo, location, posted time, workplace type and salary for each hit. Note the provider rotates its result set, so repeating the same search returns different listings and there is no stable pagination. Pass a company name as the search term to approximate a per-company job listing. Costs 1 credit.`, { | ||
| search: z.string().min(1).describe("Search keyword, e.g. 'software engineer'."), | ||
| location: z.string().optional() | ||
| .describe("A geo name or id to filter by."), | ||
| cursor: z.string().optional() | ||
| .describe("Pagination cursor (next_cursor) from a previous response."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/search/people", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("search_linkedin_jobs", `Search LinkedIn for jobs by keyword as JSON, with optional filters for date posted, location, experience level, remote, and job type. Use data.next_cursor as the next cursor while has_more is true. Costs 4 credits.`, { | ||
| search: z.string().min(1) | ||
| .describe("Job search keyword, e.g. 'software engineer'."), | ||
| cursor: z.string().optional() | ||
| .describe("Pagination cursor (next_cursor) from a previous response."), | ||
| date_posted: z.string().optional() | ||
| .describe("Date-posted filter."), | ||
| geocode: z.string().optional() | ||
| .describe("Location geocode filter."), | ||
| experience_level: z.string().optional() | ||
| .describe("Experience-level filter."), | ||
| remote: z.string().optional() | ||
| .describe("Remote filter."), | ||
| job_type: z.string().optional() | ||
| .describe("Job-type filter."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/search/jobs", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("search_linkedin_posts", `Search LinkedIn for posts by keyword as JSON. Each result includes the post ID, URL, title, activity counts (likes, comments, shares), timestamp, and author details. Use data.next_cursor as the next cursor while has_more is true. Costs 4 credits.`, { | ||
| search: z.string().min(1) | ||
| .describe("Post search keyword, e.g. 'AI agents'."), | ||
| cursor: z.string().optional() | ||
| .describe("Pagination cursor (next_cursor) from a previous response."), | ||
| date_posted: z.string().optional() | ||
| .describe("Date-posted filter."), | ||
| sort_by: z.string().optional() | ||
| .describe("Sort order filter."), | ||
| content_type: z.string().optional() | ||
| .describe("Content-type filter."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/search/posts", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_job", `Get full details for a single LinkedIn job listing as JSON. Accepts a job ID. Costs 4 credits.`, { | ||
| job_id: z.string().min(1) | ||
| .describe("Job ID, e.g. '3900000000'."), | ||
| include_skills: z.boolean().optional() | ||
| .describe("Include the required-skills section."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/job", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_post", `Get full details for a single LinkedIn post as JSON. Accepts a post ID or activity urn. Costs 4 credits.`, { | ||
| post_id: z.string().min(1) | ||
| .describe("Post id or activity urn, e.g. '7486820977411145728'."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/post", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| server.tool("get_linkedin_post_comments", `Get comments on a LinkedIn post as JSON. Accepts a post ID or activity urn. Use data.next_cursor as the next cursor while has_more is true. Costs 4 credits.`, { | ||
| post_id: z.string().min(1) | ||
| .describe("Post id or activity urn, e.g. '7486820977411145728'."), | ||
| cursor: z.string().optional() | ||
| .describe("Pagination cursor (next_cursor) from a previous response."), | ||
| sort_order: z.enum(["relevance", "recent"]).optional() | ||
| .describe("'relevance' or 'recent'."), | ||
| post_type: z.enum(["activity", "ugc"]).optional() | ||
| .describe("Post type: 'activity' or 'ugc'."), | ||
| }, async (params) => { | ||
| try { | ||
| const data = await getClient().post("/api/v1/linkedin/post/comments", params); | ||
| return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; | ||
| } | ||
| catch (err) { | ||
| return handleApiError(err); | ||
| } | ||
| }); | ||
| .describe("Geographic filter, e.g. 'United States'. Omit to search everywhere."), | ||
| }, call("/api/v1/linkedin/search/jobs")); | ||
| server.tool("get_linkedin_job", `Get full details for one LinkedIn job listing as JSON: title, full description, location, employment type, experience level, job functions, industries, benefits, skills, remote flag, closed/expiry state, applicant and view counts, salary, plus the hiring company (name, size, follower count and headquarters). Provide a job id or a full job URL. Costs 1 credit.`, { | ||
| job_id: z.string().min(1).optional().describe("Job listing id, e.g. '4415427228'."), | ||
| url: z.string().url().optional().describe("Full LinkedIn job URL, as an alternative to job_id."), | ||
| }, call("/api/v1/linkedin/job")); | ||
| server.tool("get_linkedin_post", `Get full details for one LinkedIn post as JSON: title, headline, body text, url, timestamp, hashtags, embedded links, images, video and document metadata, like and comment counts, tagged companies and people, the top visible comments, and the author with their follower and post counts. Provide a post id, activity urn, or a full post URL. Costs 1 credit.`, postRef, call("/api/v1/linkedin/post")); | ||
| server.tool("get_linkedin_post_comments", `Get the comments on a LinkedIn post as JSON, each with text, permalink, timestamp, pinned flag, the commenter (name, headline, avatar, profile URL) and any nested replies. Paginated 10 per page via a 1-based page number; the response carries the total and a has_more flag. Provide a post id, activity urn, or a full post URL. Costs 1 credit.`, { | ||
| ...postRef, | ||
| page: z.number().int().positive().optional() | ||
| .describe("1-based page number, 10 comments per page. Defaults to 1."), | ||
| }, call("/api/v1/linkedin/post/comments")); | ||
| } | ||
| //# sourceMappingURL=linkedin.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/tools/linkedin.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/tools/linkedin.ts"],"names":[],"mappings":"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"} |
+2
-2
| { | ||
| "name": "@scavio/mcp-server", | ||
| "version": "0.7.0", | ||
| "version": "0.8.0", | ||
| "mcpName": "io.github.scavio-ai/scavio-mcp", | ||
| "description": "MCP server connecting AI agents to Google, YouTube, Amazon, Walmart, TikTok, Instagram, Reddit, X, LinkedIn, and TikTok Shop. 103 tools for web search, product lookup, video discovery, and social media analysis.", | ||
| "description": "MCP server connecting AI agents to Google, YouTube, Amazon, Walmart, TikTok, Instagram, Reddit, X, LinkedIn, and TikTok Shop. 98 tools for web search, product lookup, video discovery, and social media analysis.", | ||
| "type": "module", | ||
@@ -7,0 +7,0 @@ "license": "MIT", |
+17
-13
@@ -6,3 +6,3 @@ # Scavio MCP Server | ||
| [Scavio](https://scavio.dev) is a unified [Web Search API](https://scavio.dev/docs/search-api) and MCP server that connects AI agents to Google, YouTube, Amazon, Walmart, TikTok, Instagram, Reddit, X, LinkedIn, and TikTok Shop. 103 tools for web search, product lookup, video discovery, and social media data through a single [Search API](https://scavio.dev/docs/search-api) endpoint. | ||
| [Scavio](https://scavio.dev) is a unified [Web Search API](https://scavio.dev/docs/search-api) and MCP server that connects AI agents to Google, YouTube, Amazon, Walmart, TikTok, Instagram, Reddit, X, LinkedIn, and TikTok Shop. 98 tools for web search, product lookup, video discovery, and social media data through a single [Search API](https://scavio.dev/docs/search-api) endpoint. | ||
@@ -320,17 +320,21 @@ ## Remote MCP Server | ||
| |------|-------------| | ||
| | `get_linkedin_person` | Get a member's full profile | | ||
| | `get_linkedin_person_about` | Get a member's about/overview metadata | | ||
| | `get_linkedin_person_posts` | List a member's recent posts | | ||
| | `get_linkedin_person_contact` | Get a member's public contact info | | ||
| | `get_linkedin_company` | Get a company's profile | | ||
| | `get_linkedin_company_posts` | List a company's recent posts | | ||
| | `get_linkedin_company_people` | List people who work at a company | | ||
| | `get_linkedin_company_jobs` | List a company's open job listings | | ||
| | `search_linkedin_people` | Search for people by name, title, company, or school | | ||
| | `search_linkedin_jobs` | Search for jobs by keyword | | ||
| | `search_linkedin_posts` | Search for posts by keyword | | ||
| | `get_linkedin_person` | Get a member's full profile, experience and education | | ||
| | `get_linkedin_person_about` | Get a member's about/overview sections | | ||
| | `get_linkedin_person_posts` | List a member's recent posts (up to 50) | | ||
| | `get_linkedin_company` | Get a company's profile, locations and related companies | | ||
| | `get_linkedin_company_posts` | List a company's recent posts (up to 50) | | ||
| | `search_linkedin_jobs` | Search for jobs by keyword and location | | ||
| | `get_linkedin_job` | Get full details for a job listing | | ||
| | `get_linkedin_post` | Get full details for a single post | | ||
| | `get_linkedin_post_comments` | Get comments on a post | | ||
| | `get_linkedin_post_comments` | Get comments on a post, 10 per page | | ||
| Every LinkedIn tool costs 1 credit. Take a vanity handle, slug or id, or a full | ||
| LinkedIn URL. | ||
| The upstream provider retired the datasets behind member contact info, the | ||
| company employee directory, per-company job listings, people search and post | ||
| search, so those five tools were removed. `get_linkedin_company` still returns a | ||
| small sample of featured employees, and `search_linkedin_jobs` with a company | ||
| name substitutes for per-company listings. | ||
| ### [TikTok Shop API](https://scavio.dev/docs/tiktok-shop-search) | ||
@@ -337,0 +341,0 @@ |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
387
1.04%225691
-5.95%2076
-7.65%