Skip to main content
Glama

Resolve LinkedIn URL

resolve_linkedin_url
Idempotent

Resolve a company domain or name to a verified LinkedIn company URL, with confidence score and optional firmographics, for Clay-ready GTM enrichment.

Instructions

Resolve a company domain or name to its LinkedIn company URL, with a 0-100 confidence_score, social links, and optional firmographics from search snippets, as a flat, Clay-ready JSON row. A URL is returned only when verified: the company homepage links it, or its name is identical to the name the company site declares or the company_name you pass; otherwise linkedin_company_url is null and verification says why. No request is sent to LinkedIn. Provide at least one of company_domain or company_name. Use this when the LinkedIn company URL is the answer you need; use resolve_company_identity instead to cross-check a name, domain, and LinkedIn URL you already hold and get a canonical identity with conflicts flagged. Reads public data and writes nothing; requires an APIFY_TOKEN and consumes Apify credits per call.

Input Schema

NameRequiredDescriptionDefault
skipCacheNoWhen "false", the default, a successful resolution is cached for 7 days and reused. Set "true" to force a fresh resolution. Sent as a string for Clay compatibility.
company_nameNoCompany name. Required if company_domain is not provided.
company_domainNoBare company domain, e.g. stripe.com. Required if company_name is not provided.
max_charge_usdNoOptional spending cap for this call, in USD, passed to the actor as max_charge_usd. The run stops before any charge that would take it past this amount and keeps every row already charged. Leave empty to rely only on the maximum charge per run set on your Apify account.
minConfidenceScoreNoA LinkedIn page is returned only when its match score is at least this value, 0 to 100. Default "70". Raise it for fewer, surer answers; lower it for more answers and more wrong ones. Sent as a string for Clay compatibility.
includeFirmographicsNoWhen "true", also reads employee count, industry, HQ, follower count and description from search result snippets about the LinkedIn company page. No request is sent to LinkedIn. Fields no snippet states stay null. Off by default because it can add a search. Sent as a string for Clay compatibility.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.14.0
    • addedInput schema / properties / max_charge_usd
      Added value: +{
      +  "description": "Optional spending cap for this call, in USD, passed to the actor as max_charge_usd. The run stops before any charge that would take it past this amount and keeps every row already charged. Leave empty to rely only on the maximum charge per run set on your Apify account.",
      +  "minimum": 0,
      +  "type": "number"
      +}
  2. Changed3 schema fields changedv1.1.1
    • addedInput schema / properties / includeFirmographics
      Added value: +{
      +  "description": "When \"true\", also reads employee count, industry, HQ, follower count and description from search result snippets about the LinkedIn company page. No request is sent to LinkedIn. Fields no snippet states stay null. Off by default because it can add a search. Sent as a string for Clay compatibility.",
      +  "enum": [
      +    "false",
      +    "true"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / minConfidenceScore
      Added value: +{
      +  "description": "A LinkedIn page is returned only when its match score is at least this value, 0 to 100. Default \"70\". Raise it for fewer, surer answers; lower it for more answers and more wrong ones. Sent as a string for Clay compatibility.",
      +  "pattern": "^\\s*(100|[1-9]?[0-9])?\\s*$",
      +  "type": "string"
      +}
    • addedInput schema / properties / skipCache
      Added value: +{
      +  "description": "When \"false\", the default, a successful resolution is cached for 7 days and reused. Set \"true\" to force a fresh resolution. Sent as a string for Clay compatibility.",
      +  "enum": [
      +    "false",
      +    "true"
      +  ],
      +  "type": "string"
      +}
  3. First observedv1.0.3

TDQS

A4.8/5.0
Behavior5/5

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

Discloses far more than the annotations: the exact verification rule for returning a URL vs null, that no request is sent to LinkedIn, 7-day caching, that it requires an APIFY_TOKEN, and that it consumes Apify credits per call. This explains why readOnlyHint is false (credit side effects) despite the tool writing no data, which the description states explicitly.

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

Conciseness4/5

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

Front-loaded with purpose and the sibling distinction, then verification, then inputs, then routing and cost. Dense and every clause carries information, though it is delivered as one long block rather than broken into scannable units.

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

Completeness5/5

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

With no output schema, the description still characterizes the return shape (flat Clay-ready JSON row with confidence_score, social links, optional firmographics, and null-plus-reason when unverified). For a 6-param, 0-required, externally-billed call, nothing an agent needs is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds value beyond the schema: the 'at least one of company_domain or company_name' constraint is not expressed by required=0, and it explains what minConfidenceScore buys (fewer, surer answers vs more wrong ones).

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

Purpose5/5

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

States a specific verb and resource ('Resolve a company domain or name to its LinkedIn company URL') plus the returned payload (confidence_score, social links, firmographics). It explicitly names and distinguishes the sibling resolve_company_identity, so an agent can route correctly without opening either schema.

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

Usage Guidelines5/5

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

Gives a positive trigger ('Use this when the LinkedIn company URL is the answer you need'), names the alternative and its distinct purpose ('use resolve_company_identity instead to cross-check a name, domain, and LinkedIn URL you already hold'), and states the input precondition ('Provide at least one of company_domain or company_name').

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