Skip to main content
Glama

get_linkedin_company_employees

Retrieve employee data from LinkedIn companies using search filters like keywords, first name, last name, and company identifiers to find specific professionals.

Instructions

Get employees of a LinkedIn company

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
companiesYesCompany URNs (example: ['company:14064608'])
countYesMaximum number of results
first_nameNoSearch for exact first name
keywordsNoAny keyword for searching employees
last_nameNoSearch for exact last name
timeoutNoTimeout in seconds

Implementation Reference

  • The async handler function that prepares the request data and calls the AnySite API to fetch LinkedIn company employees, returning JSON response or error.
    async ({ companies, keywords, first_name, last_name, count, timeout }) => {
      const requestData: any = { timeout, companies, count };
      if (keywords) requestData.keywords = keywords;
      if (first_name) requestData.first_name = first_name;
      if (last_name) requestData.last_name = last_name;
      log(`Starting LinkedIn company employees lookup for companies: ${companies.join(', ')}`);
      try {
        const response = await makeRequest(API_CONFIG.ENDPOINTS.LINKEDIN_COMPANY_EMPLOYEES, requestData);
        return {
          content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
        };
      } catch (error) {
        log("LinkedIn company employees lookup error:", error);
        return {
          content: [{ type: "text", text: `LinkedIn company employees API error: ${formatError(error)}` }],
          isError: true
        };
      }
    }
  • Zod input schema defining parameters for the get_linkedin_company_employees tool.
      companies: z.array(z.string()).describe("Company URNs or aliases"),
      keywords: z.string().optional().describe("Search keywords"),
      first_name: z.string().optional().describe("First name filter"),
      last_name: z.string().optional().describe("Last name filter"),
      count: z.number().default(10).describe("Max employees"),
      timeout: z.number().default(300).describe("Timeout in seconds")
    },
  • src/index.ts:603-633 (registration)
    Registration of the tool using McpServer.tool() method, specifying name, description, input schema, and handler.
    server.tool(
      "get_linkedin_company_employees",
      "Get LinkedIn company employees",
      {
        companies: z.array(z.string()).describe("Company URNs or aliases"),
        keywords: z.string().optional().describe("Search keywords"),
        first_name: z.string().optional().describe("First name filter"),
        last_name: z.string().optional().describe("Last name filter"),
        count: z.number().default(10).describe("Max employees"),
        timeout: z.number().default(300).describe("Timeout in seconds")
      },
      async ({ companies, keywords, first_name, last_name, count, timeout }) => {
        const requestData: any = { timeout, companies, count };
        if (keywords) requestData.keywords = keywords;
        if (first_name) requestData.first_name = first_name;
        if (last_name) requestData.last_name = last_name;
        log(`Starting LinkedIn company employees lookup for companies: ${companies.join(', ')}`);
        try {
          const response = await makeRequest(API_CONFIG.ENDPOINTS.LINKEDIN_COMPANY_EMPLOYEES, requestData);
          return {
            content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
          };
        } catch (error) {
          log("LinkedIn company employees lookup error:", error);
          return {
            content: [{ type: "text", text: `LinkedIn company employees API error: ${formatError(error)}` }],
            isError: true
          };
        }
      }
    );
  • TypeScript interface defining the input arguments for the tool.
    export interface GetLinkedinCompanyEmployeesArgs {
      companies: string[];
      keywords?: string;
      first_name?: string;
      last_name?: string;
      count?: number;
      timeout?: number;
    }
  • Helper function makeRequest used by the handler to perform HTTPS POST requests to the AnySite API endpoints.
    const makeRequest = (endpoint: string, data: any, method: string = "POST"): Promise<any> => {
      return new Promise((resolve, reject) => {
        const url = new URL(endpoint, API_CONFIG.BASE_URL);
        const postData = JSON.stringify(data);
    
        const options = {
          hostname: url.hostname,
          port: url.port || 443,
          path: url.pathname,
          method: method,
          headers: {
            "Content-Type": "application/json",
            "Content-Length": Buffer.byteLength(postData),
            "access-token": API_KEY,
            ...(ACCOUNT_ID && { "x-account-id": ACCOUNT_ID })
          }
        };
    
        const req = https.request(options, (res) => {
          let responseData = "";
          res.on("data", (chunk) => {
            responseData += chunk;
          });
    
          res.on("end", () => {
            try {
              const parsed = JSON.parse(responseData);
              if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
                resolve(parsed);
              } else {
                reject(new Error(`API error ${res.statusCode}: ${JSON.stringify(parsed)}`));
              }
            } catch (e) {
              reject(new Error(`Failed to parse response: ${responseData}`));
            }
          });
        });
    
        req.on("error", (error) => {
          reject(error);
        });
    
        req.write(postData);
        req.end();
      });
    };
  • API endpoint path constant used in the handler for company employees request.
    LINKEDIN_COMPANY_EMPLOYEES: "/api/linkedin/company/employees",

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/anysiteio/hdw-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server