Skip to main content
Glama

search_companies

Search for companies using keywords, filters for size, location, and industry to find business leads through LinkedIn data.

Instructions

Allows you to search for companies applying various filtering criteria (st.searchCompanies action).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
termNoOptional. Keyword or phrase to search.
limitNoOptional. Number of search results to return. Defaults to 10, with a maximum value of 1000.
filterNoOptional. Object that specifies filtering criteria for companies. When multiple filter fields are specified, they are combined using AND logic.

Implementation Reference

  • Defines the SearchCompaniesTool class, which implements the MCP tool named 'search_companies'. It specifies the name, operationName for the LinkedAPI operation, input schema (Zod and JSON), description, and getTool() method to return the MCP Tool object. Execution is delegated to the parent OperationTool.
    export class SearchCompaniesTool extends OperationTool<TSearchCompaniesParams, unknown> { public override readonly name = 'search_companies'; public override readonly operationName = OPERATION_NAME.searchCompanies; protected override readonly schema = z.object({ term: z.string().optional(), limit: z.number().min(1).max(1000).optional(), filter: z .object({ locations: z.array(z.string()).optional(), industries: z.array(z.string()).optional(), sizes: z .array( z.enum([ '1-10', '11-50', '51-200', '201-500', '501-1000', '1001-5000', '5001-10000', '10001+', ]), ) .optional(), }) .optional(), }); public override getTool(): Tool { return { name: this.name, description: 'Allows you to search for companies applying various filtering criteria (st.searchCompanies action).', inputSchema: { type: 'object', properties: { term: { type: 'string', description: 'Optional. Keyword or phrase to search.', }, limit: { type: 'number', description: 'Optional. Number of search results to return. Defaults to 10, with a maximum value of 1000.', }, filter: { type: 'object', description: 'Optional. Object that specifies filtering criteria for companies. When multiple filter fields are specified, they are combined using AND logic.', properties: { sizes: { type: 'array', description: 'Optional. Array of enums representing employee count ranges. Matches if company size falls within any of the listed ranges.', items: { type: 'string', enum: [ '1-10', '11-50', '51-200', '201-500', '501-1000', '1001-5000', '5001-10000', '10001+', ], }, }, locations: { type: 'array', description: 'Optional. Array of free-form strings representing locations. Matches if company is headquartered in any of the listed locations.', items: { type: 'string' }, }, industries: { type: 'array', description: 'Optional. Array of enums representing industries. Matches if company works in any of the listed industries. Takes specific values available in the LinkedIn interface.', items: { type: 'string' }, }, }, }, }, }, }; } }
  • Zod schema defining the input parameters for the search_companies tool: term, limit, and filter (locations, industries, sizes). Used for validation in validate() method.
    protected override readonly schema = z.object({ term: z.string().optional(), limit: z.number().min(1).max(1000).optional(), filter: z .object({ locations: z.array(z.string()).optional(), industries: z.array(z.string()).optional(), sizes: z .array( z.enum([ '1-10', '11-50', '51-200', '201-500', '501-1000', '1001-5000', '5001-10000', '10001+', ]), ) .optional(), }) .optional(), });
  • Instantiates the SearchCompaniesTool and adds it to the tools array in LinkedApiTools constructor, registering it for use.
    new SearchCompaniesTool(progressCallback),
  • Imports the SearchCompaniesTool class.
    import { SearchCompaniesTool } from './tools/search-companies.js';
  • The execute method in OperationTool (parent class) implements the core handler logic for all operation-based tools, including search_companies. It locates the specific LinkedAPI operation by name and executes it with progress tracking.
    public override execute({ linkedapi, args, workflowTimeout, progressToken, }: { linkedapi: LinkedApi; args: TParams; workflowTimeout: number; progressToken?: string | number; }): Promise<TMappedResponse<TResult>> { const operation = linkedapi.operations.find( (operation) => operation.operationName === this.operationName, )! as Operation<TParams, TResult>; return executeWithProgress(this.progressCallback, operation, workflowTimeout, { params: args, progressToken, }); }

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/Linked-API/linkedapi-mcp'

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