Skip to main content
Glama
Linked-API
by Linked-API

nv_search_companies

Search for companies in Sales Navigator using filters like employee size, location, industry, and revenue to identify potential business targets.

Instructions

Allows you to search for companies in Sales Navigator applying various filtering criteria. (nv.searchCompanies action).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
termNoOptional. Keyword or phrase to search.
limitNoOptional. Number of search results to return. Defaults to 25, 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

  • Base OperationTool class with execute method that implements the core handler logic for tools like nv_search_companies by invoking the corresponding LinkedAPI operation.
    export abstract class OperationTool<TParams, TResult> extends LinkedApiTool<TParams, TResult> {
      public abstract readonly operationName: TOperationName;
    
      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,
        });
      }
    }
  • Registration of the NvSearchCompaniesTool instance in the LinkedApiTools constructor's tools array.
    new NvSearchCompaniesTool(progressCallback),
  • Zod schema defining the input parameters for nv_search_companies tool.
    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(),
          annualRevenue: z
            .object({
              min: z.string().optional(),
              max: z.string().optional(),
            })
            .optional(),
        })
        .optional(),
    });
  • NvSearchCompaniesTool class definition, including name, operationName, zod schema, and MCP tool schema via getTool().
    export class NvSearchCompaniesTool extends OperationTool<TNvSearchCompaniesParams, unknown> {
      public override readonly name = 'nv_search_companies';
      public override readonly operationName = OPERATION_NAME.nvSearchCompanies;
      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(),
            annualRevenue: z
              .object({
                min: z.string().optional(),
                max: z.string().optional(),
              })
              .optional(),
          })
          .optional(),
      });
    
      public override getTool(): Tool {
        return {
          name: this.name,
          description:
            'Allows you to search for companies in Sales Navigator applying various filtering criteria. (nv.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 25, 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' },
                  },
                  annualRevenue: {
                    type: 'object',
                    description:
                      'Optional. Object representing company annual revenue range in million USD.',
                    properties: {
                      min: {
                        type: 'string',
                        enum: ['0', '0.5', '1', '2.5', '5', '10', '20', '50', '100', '500', '1000'],
                      },
                      max: {
                        type: 'string',
                        enum: ['0.5', '1', '2.5', '5', '10', '20', '50', '100', '500', '1000', '1000+'],
                      },
                    },
                  },
                },
              },
            },
          },
        };
      }
    }
  • Import of NvSearchCompaniesTool for registration.
    import { NvSearchCompaniesTool } from './tools/nv-search-companies.js';
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but provides minimal information. It mentions 'applying various filtering criteria' but doesn't describe what happens when no filters are applied, whether results are paginated, what the typical response format looks like, or any rate limits or authentication requirements. For a search tool with complex filtering capabilities, this is insufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief (one sentence plus an action reference) but not particularly well-structured. The parenthetical '(nv.searchCompanies action)' feels like implementation detail rather than user-facing information. While concise, it could be more effectively organized to front-load the most important information about the tool's purpose and differentiation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with complex filtering capabilities (nested objects, multiple filter types) and no output schema, the description is inadequate. It doesn't explain what information is returned about companies, how results are ordered, whether there's pagination, or what happens when filters yield no results. The absence of annotations means the description should provide more behavioral context than it does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'applying various filtering criteria' which aligns with the 'filter' parameter in the schema, but adds no additional semantic context beyond what the 100% schema coverage already provides. The schema descriptions thoroughly document all parameters (term, limit, filter with its sub-properties), so the description doesn't need to compensate but also doesn't add value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('search for companies') and the context ('in Sales Navigator'), which distinguishes it from generic search tools. However, it doesn't explicitly differentiate from the sibling 'search_companies' tool, which appears to be a non-Sales Navigator version, leaving some ambiguity about when to choose this specific tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling 'search_companies' tool or explain why someone would choose the Sales Navigator version (nv_search_companies) over the regular version. There's also no mention of prerequisites, access requirements, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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