From c14813666ebea13e4148cd18a5d08e3bc8ff0cc7 Mon Sep 17 00:00:00 2001 From: Pranesh Date: Wed, 20 May 2026 16:22:30 +0530 Subject: [PATCH 1/3] add LeadIQ connector docs: capabilities, setup guide, common workflows --- ...on-after-setup-leadiq-common-workflows.mdx | 324 ++++++++++++++++++ .../agent-connectors/_setup-leadiq.mdx | 84 +++++ .../templates/agent-connectors/index.ts | 2 + .../docs/agentkit/connectors/leadiq.mdx | 88 +++++ src/data/agent-connectors/capabilities.json | 8 + src/data/agent-connectors/leadiq.ts | 145 ++++++++ 6 files changed, 651 insertions(+) create mode 100644 src/components/templates/agent-connectors/_section-after-setup-leadiq-common-workflows.mdx create mode 100644 src/components/templates/agent-connectors/_setup-leadiq.mdx create mode 100644 src/content/docs/agentkit/connectors/leadiq.mdx create mode 100644 src/data/agent-connectors/leadiq.ts diff --git a/src/components/templates/agent-connectors/_section-after-setup-leadiq-common-workflows.mdx b/src/components/templates/agent-connectors/_section-after-setup-leadiq-common-workflows.mdx new file mode 100644 index 000000000..ccb07eba8 --- /dev/null +++ b/src/components/templates/agent-connectors/_section-after-setup-leadiq-common-workflows.mdx @@ -0,0 +1,324 @@ +export const sectionTitle = 'Common workflows' + +import { Tabs, TabItem, Aside } from '@astrojs/starlight/components' + + + +
+Check credit quota before searching + +Always check available credits before calling tools that consume them (`leadiq_search_people`, `leadiq_flat_advanced_search`, `leadiq_grouped_advanced_search`). + + + + ```typescript + const usage = await actions.executeTool({ + toolName: 'leadiq_get_usage', + connectionName: 'leadiq', + identifier: 'user_123', + toolInput: {}, + }); + console.log(usage.data?.usage); + ``` + + + ```python + usage = actions.execute_tool( + tool_name="leadiq_get_usage", + connection_name="leadiq", + identifier="user_123", + tool_input={}, + ) + print(usage.data) + ``` + + + +
+ +
+Preview contact availability before consuming credits + +Use `leadiq_search_people_preview` to check whether LeadIQ has a work email or phone for a person before calling `leadiq_search_people`. The preview call does not consume credits. + + + + ```typescript + const preview = await actions.executeTool({ + toolName: 'leadiq_search_people_preview', + connectionName: 'leadiq', + identifier: 'user_123', + toolInput: { + linkedin_url: 'https://www.linkedin.com/in/janedoe', + }, + }); + + if (preview.data?.data?.searchPeoplePreview?.hasEmail) { + // Safe to call leadiq_search_people — credits will be consumed + } + ``` + + + ```python + preview = actions.execute_tool( + tool_name="leadiq_search_people_preview", + connection_name="leadiq", + identifier="user_123", + tool_input={"linkedin_url": "https://www.linkedin.com/in/janedoe"}, + ) + + result = preview.data.get("data", {}).get("searchPeoplePreview", {}) + if result.get("hasEmail"): + # Safe to call leadiq_search_people — credits will be consumed + pass + ``` + + + +
+ +
+Look up a contact by LinkedIn URL, email, or name + + + + ```typescript + // By LinkedIn URL (most precise) + const contact = await actions.executeTool({ + toolName: 'leadiq_search_people', + connectionName: 'leadiq', + identifier: 'user_123', + toolInput: { + linkedin_url: 'https://www.linkedin.com/in/janedoe', + limit: 1, + }, + }); + + // By name + company + const byName = await actions.executeTool({ + toolName: 'leadiq_search_people', + connectionName: 'leadiq', + identifier: 'user_123', + toolInput: { + first_name: 'Jane', + last_name: 'Doe', + company_name: 'Acme Corp', + limit: 5, + }, + }); + ``` + + + ```python + # By LinkedIn URL (most precise) + contact = actions.execute_tool( + tool_name="leadiq_search_people", + connection_name="leadiq", + identifier="user_123", + tool_input={ + "linkedin_url": "https://www.linkedin.com/in/janedoe", + "limit": 1, + }, + ) + + # By name + company + by_name = actions.execute_tool( + tool_name="leadiq_search_people", + connection_name="leadiq", + identifier="user_123", + tool_input={ + "first_name": "Jane", + "last_name": "Doe", + "company_name": "Acme Corp", + "limit": 5, + }, + ) + ``` + + + +
+ +
+Enrich a company by domain or name + + + + ```typescript + const company = await actions.executeTool({ + toolName: 'leadiq_search_company', + connectionName: 'leadiq', + identifier: 'user_123', + toolInput: { + company_domain: 'acme.com', + }, + }); + console.log(company.data?.data?.searchCompany); + ``` + + + ```python + company = actions.execute_tool( + tool_name="leadiq_search_company", + connection_name="leadiq", + identifier="user_123", + tool_input={"company_domain": "acme.com"}, + ) + print(company.data) + ``` + + + +
+ +
+Advanced people search with industry and seniority filters + +Pass filter objects as Python dicts or JavaScript objects — not JSON-encoded strings. + + + + ```typescript + const results = await actions.executeTool({ + toolName: 'leadiq_flat_advanced_search', + connectionName: 'leadiq', + identifier: 'user_123', + toolInput: { + company_filter: { + industries: ['Software Development'], + sizes: [{ min: 50, max: 500 }], + }, + contact_filter: { + seniorities: ['VP', 'Director'], + }, + limit: 10, + }, + }); + const people = results.data?.data?.flatAdvancedSearch?.people ?? []; + ``` + + + ```python + results = actions.execute_tool( + tool_name="leadiq_flat_advanced_search", + connection_name="leadiq", + identifier="user_123", + tool_input={ + "company_filter": { + "industries": ["Software Development"], + "sizes": [{"min": 50, "max": 500}], + }, + "contact_filter": { + "seniorities": ["VP", "Director"], + }, + "limit": 10, + }, + ) + people = results.data.get("data", {}).get("flatAdvancedSearch", {}).get("people", []) + ``` + + + +
+ +
+Advanced search grouped by company (account-based prospecting) + +Returns results organized by company, each with a list of matching contacts. Useful for account-based outreach. + + + + ```typescript + const grouped = await actions.executeTool({ + toolName: 'leadiq_grouped_advanced_search', + connectionName: 'leadiq', + identifier: 'user_123', + toolInput: { + company_filter: { + industries: ['Financial Services'], + sizes: [{ min: 200, max: 5000 }], + }, + contact_filter: { + seniorities: ['Executive', 'VP'], + }, + limit: 5, // number of companies + limit_per_company: 3, // contacts per company + }, + }); + const companies = grouped.data?.data?.groupedAdvancedSearch?.companies ?? []; + ``` + + + ```python + grouped = actions.execute_tool( + tool_name="leadiq_grouped_advanced_search", + connection_name="leadiq", + identifier="user_123", + tool_input={ + "company_filter": { + "industries": ["Financial Services"], + "sizes": [{"min": 200, "max": 5000}], + }, + "contact_filter": { + "seniorities": ["Executive", "VP"], + }, + "limit": 5, # number of companies + "limit_per_company": 3, # contacts per company + }, + ) + companies = ( + grouped.data.get("data", {}) + .get("groupedAdvancedSearch", {}) + .get("companies", []) + ) + ``` + + + +
+ +
+Report incorrect contact data + +Help improve LeadIQ data quality by reporting bounced emails or wrong phone numbers. + + + + ```typescript + await actions.executeTool({ + toolName: 'leadiq_submit_person_feedback', + connectionName: 'leadiq', + identifier: 'user_123', + toolInput: { + value: 'jane.doe@acme.com', + status: 'Invalid', + type: 'WorkEmail', + invalid_reason: 'EmailBounceCode550', + }, + }); + ``` + + + ```python + actions.execute_tool( + tool_name="leadiq_submit_person_feedback", + connection_name="leadiq", + identifier="user_123", + tool_input={ + "value": "jane.doe@acme.com", + "status": "Invalid", + "type": "WorkEmail", + "invalid_reason": "EmailBounceCode550", + }, + ) + ``` + + + +
+ + diff --git a/src/components/templates/agent-connectors/_setup-leadiq.mdx b/src/components/templates/agent-connectors/_setup-leadiq.mdx new file mode 100644 index 000000000..d2bc171cb --- /dev/null +++ b/src/components/templates/agent-connectors/_setup-leadiq.mdx @@ -0,0 +1,84 @@ +import { Steps, Aside, Tabs, TabItem } from '@astrojs/starlight/components' + +Register your LeadIQ API key with Scalekit so it stores it securely and injects it into every request. LeadIQ uses API key authentication — there is no redirect URI or OAuth flow. + + +1. ### Get your LeadIQ API key + + - Sign in to [LeadIQ](https://app.leadiq.com) and go to **Settings** → **API Keys**. + - Copy an existing key or click **Generate new API key** to create one dedicated to this integration. + + + +2. ### Create a connection in Scalekit + + - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** → **Connections** → **Create Connection**. Find **LeadIQ** and click **Create**. + - Note the **Connection name** — you will use this as `connection_name` in your code (e.g., `leadiq`). + - Click **Save**. + +3. ### Add a connected account + + Connected accounts link a specific user identifier in your system to their LeadIQ API key. Add them via the dashboard for testing, or via the Scalekit API in production. + + **Via dashboard (for testing)** + + - Open the connection you created and click the **Connected Accounts** tab → **Add account**. + - Fill in: + - **Your User's ID** — a unique identifier for this user in your system (e.g., `user_123`) + - **API Key** — the LeadIQ API key from step 1 + - Click **Create Account**. + + **Via API (for production)** + + + + ```typescript + import { Scalekit } from '@scalekit-sdk/node'; + + const scalekit = new Scalekit( + process.env.SCALEKIT_ENV_URL, + process.env.SCALEKIT_CLIENT_ID, + process.env.SCALEKIT_CLIENT_SECRET, + ); + + // Never hard-code credentials — read from secure storage or user input + const leadiqApiKey = getUserLeadIQApiKey(); // retrieve from your secure store + + await scalekit.actions.upsertConnectedAccount({ + connectionName: 'leadiq', + identifier: 'user_123', + credentials: { + username: leadiqApiKey, + }, + }); + ``` + + + ```python + import os + from scalekit import ScalekitClient + + scalekit_client = ScalekitClient( + env_url=os.environ["SCALEKIT_ENV_URL"], + client_id=os.environ["SCALEKIT_CLIENT_ID"], + client_secret=os.environ["SCALEKIT_CLIENT_SECRET"], + ) + + # Never hard-code credentials — read from secure storage or user input + leadiq_api_key = get_user_leadiq_api_key() # retrieve from your secure store + + scalekit_client.actions.upsert_connected_account( + connection_name="leadiq", + identifier="user_123", + credentials={"username": leadiq_api_key}, + ) + ``` + + + + + diff --git a/src/components/templates/agent-connectors/index.ts b/src/components/templates/agent-connectors/index.ts index 5ec9ebb05..1c72e0ebd 100644 --- a/src/components/templates/agent-connectors/index.ts +++ b/src/components/templates/agent-connectors/index.ts @@ -40,6 +40,7 @@ export { default as SetupHubspotSection } from './_setup-hubspot.mdx' export { default as SetupIntercomSection } from './_setup-intercom.mdx' export { default as SetupJiminnySection } from './_setup-jiminny.mdx' export { default as SetupJiraSection } from './_setup-jira.mdx' +export { default as SetupLeadiqSection } from './_setup-leadiq.mdx' export { default as SetupLinearSection } from './_setup-linear.mdx' export { default as SetupMailchimpSection } from './_setup-mailchimp.mdx' export { default as SetupMicrosoftExcelSection } from './_setup-microsoft-excel.mdx' @@ -117,6 +118,7 @@ export { default as SectionAfterSetupHeyreachCommonWorkflows } from './_section- export { default as SectionAfterSetupHubspotCommonWorkflows } from './_section-after-setup-hubspot-common-workflows.mdx' export { default as SectionAfterSetupIntercomCommonWorkflows } from './_section-after-setup-intercom-common-workflows.mdx' export { default as SectionAfterSetupJiraCommonWorkflows } from './_section-after-setup-jira-common-workflows.mdx' +export { default as SectionAfterSetupLeadiqCommonWorkflows } from './_section-after-setup-leadiq-common-workflows.mdx' export { default as SectionAfterSetupLinearCommonWorkflows } from './_section-after-setup-linear-common-workflows.mdx' export { default as SectionAfterSetupMailchimpCommonWorkflows } from './_section-after-setup-mailchimp-common-workflows.mdx' export { default as SectionAfterSetupMicrosoftexcelCommonWorkflows } from './_section-after-setup-microsoftexcel-common-workflows.mdx' diff --git a/src/content/docs/agentkit/connectors/leadiq.mdx b/src/content/docs/agentkit/connectors/leadiq.mdx new file mode 100644 index 000000000..6f629bce4 --- /dev/null +++ b/src/content/docs/agentkit/connectors/leadiq.mdx @@ -0,0 +1,88 @@ +--- +title: 'LeadIQ connector' +tableOfContents: true +description: 'Connect to LeadIQ to search and enrich B2B contacts and companies with verified emails, direct dials, and mobile numbers. Build prospect lists and power outreach workflows.' +sidebar: + label: 'LeadIQ' +connectorIcon: https://cdn.scalekit.com/sk-connect/assets/provider-icons/leadiq.svg +connectorAuthType: API Key +connectorCategories: [crm, sales, analytics] +head: + - tag: style + content: | + .sl-markdown-content h2 { + font-size: var(--sl-text-xl); + } + .sl-markdown-content h3 { + font-size: var(--sl-text-lg); + } +--- + +import ToolList from '@/components/ToolList.astro' +import { tools } from '@/data/agent-connectors/leadiq' +import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' +import { AgentKitCredentials } from '@components/templates' +import { SetupLeadiqSection } from '@components/templates' +import { QuickstartGenericApikeySection } from '@components/templates' +import { SectionAfterSetupLeadiqCommonWorkflows } from '@components/templates' + + + +1. ### Install the SDK + + + + ```bash frame="terminal" + npm install @scalekit-sdk/node + ``` + + + ```bash frame="terminal" + pip install scalekit + ``` + + + + Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/) + +2. ### Set your credentials + + + +3. ### Set up the connector + + Register your LeadIQ API key with Scalekit so it stores it securely. You do this once per environment. + +
+ Dashboard setup steps + + + +
+ +4. ### Make your first call + + + +
+ +## What you can do + +Connect this agent connector to let your agent: + +- **Search contacts** — look up verified work emails, direct dials, and mobile numbers by LinkedIn URL, email, or name +- **Preview before consuming credits** — check whether LeadIQ has a work email or phone for a person without spending credits +- **Enrich companies** — fetch firmographics including industry, employee count, and location by domain or name +- **Advanced prospecting** — filter contacts by title, seniority, industry, company size, and location; get results flat or grouped by company +- **Manage prospect lists** — create lists, add contacts, and retrieve saved prospects (requires Prospector plan) +- **Monitor quota** — check API credit usage, plan limits, and subscription status before making credit-consuming calls + +## Common workflows + + + +## Tool list + +Pass the exact tool name from the list below when you call `executeTool` (Node.js) or `execute_tool` (Python). + + diff --git a/src/data/agent-connectors/capabilities.json b/src/data/agent-connectors/capabilities.json index fa69f6845..8832c9128 100644 --- a/src/data/agent-connectors/capabilities.json +++ b/src/data/agent-connectors/capabilities.json @@ -69,6 +69,14 @@ "**Manage projects** \u2014 list projects, sprints, and boards", "**Search with JQL** \u2014 execute Jira Query Language searches for advanced filtering" ], + "leadiq": [ + "**Search contacts** \u2014 look up verified work emails, direct dials, and mobile numbers by LinkedIn URL, email, or name", + "**Preview before consuming credits** \u2014 check whether LeadIQ has a work email or phone for a person without spending credits", + "**Enrich companies** \u2014 fetch firmographics including industry, employee count, and location by domain or name", + "**Advanced prospecting** \u2014 filter contacts by title, seniority, industry, company size, and location; get results flat or grouped by company", + "**Manage prospect lists** \u2014 create lists, add contacts, and retrieve saved prospects (requires Prospector plan)", + "**Monitor quota** \u2014 check API credit usage, plan limits, and subscription status before making credit-consuming calls" + ], "google_drive": [ "**Browse files** \u2014 list and search files and folders across the user's Drive", "**Read file content** \u2014 download and extract text from documents, spreadsheets, and PDFs", diff --git a/src/data/agent-connectors/leadiq.ts b/src/data/agent-connectors/leadiq.ts new file mode 100644 index 000000000..02fa2721a --- /dev/null +++ b/src/data/agent-connectors/leadiq.ts @@ -0,0 +1,145 @@ +import type { Tool } from '../../types/agent-connectors' + +export const tools: Tool[] = [ + { + name: 'leadiq_add_prospect_to_list', + description: `Add a contact to an existing LeadIQ prospect list. Provide first name, last name, and any known contact details. Use Get Prospect Lists to find the list ID.`, + params: [ + { name: 'list_id', type: 'string', required: true, description: `ID of the prospect list to add the contact to` }, + { name: 'first_name', type: 'string', required: true, description: `First name of the prospect` }, + { name: 'last_name', type: 'string', required: true, description: `Last name of the prospect` }, + { name: 'work_email', type: 'string', required: false, description: `Work email address of the prospect` }, + { name: 'work_phone', type: 'string', required: false, description: `Work phone number of the prospect` }, + { name: 'mobile_phone', type: 'string', required: false, description: `Mobile phone number of the prospect` }, + { name: 'title', type: 'string', required: false, description: `Job title of the prospect` }, + { name: 'seniority', type: 'string', required: false, description: `Seniority level of the prospect` }, + { name: 'company', type: 'string', required: false, description: `Current company name of the prospect` }, + { name: 'company_domain', type: 'string', required: false, description: `Website domain of the prospect's company` }, + { name: 'company_industry', type: 'string', required: false, description: `Industry of the prospect's company` }, + { name: 'linkedin_url', type: 'string', required: false, description: `LinkedIn profile URL of the prospect` }, + { name: 'notes', type: 'string', required: false, description: `Internal notes about this prospect` }, + ], + }, + { + name: 'leadiq_create_list', + description: `Create a new prospect list in LeadIQ to organize contacts for outreach campaigns. Returns the created list ID for use with Add Prospect to List.`, + params: [ + { name: 'name', type: 'string', required: true, description: `Name of the prospect list` }, + { name: 'description', type: 'string', required: false, description: `Optional description of the prospect list` }, + ], + }, + { + name: 'leadiq_flat_advanced_search', + description: `Search across LeadIQ's full contact database using advanced filters for title, seniority, company, industry, location, and more. Returns a flat list of matching contacts. Consumes credits per result.`, + params: [ + { name: 'contact_filter', type: 'object', required: false, description: `Filter contacts by title, seniority, role, location, and more` }, + { name: 'company_filter', type: 'object', required: false, description: `Filter by company attributes including name, domain, industry, size, and location` }, + { name: 'contact_excluded_filter', type: 'object', required: false, description: `Exclude contacts matching these criteria` }, + { name: 'company_excluded_filter', type: 'object', required: false, description: `Exclude contacts at companies matching these criteria` }, + { name: 'skip', type: 'integer', required: false, description: `Number of results to skip for pagination (default 0)` }, + { name: 'limit', type: 'integer', required: false, description: `Maximum number of contacts to return (default 10)` }, + ], + }, + { + name: 'leadiq_get_account', + description: `Retrieve the current LeadIQ account details including active plans, product subscriptions, billing status, and credit usage (available and used). Use this to check remaining search credits before making enrichment calls.`, + params: [], + }, + { + name: 'leadiq_get_list', + description: `Retrieve a specific prospect list by ID, including its contacts with name, title, company, email, and LinkedIn URL. Use Get Prospect Lists first to find the list ID.`, + params: [ + { name: 'id', type: 'string', required: true, description: `ID of the prospect list to retrieve` }, + { name: 'prospects_limit', type: 'integer', required: false, description: `Maximum number of prospects to return from the list (default 25)` }, + { name: 'prospects_cursor', type: 'string', required: false, description: `Pagination cursor from a previous response to get the next batch of prospects` }, + ], + }, + { + name: 'leadiq_get_lists', + description: `Retrieve all prospect lists in the LeadIQ account. Returns list metadata including name, status, and timestamps. Use the returned list IDs with Get Prospect List to fetch contacts.`, + params: [ + { name: 'limit', type: 'integer', required: false, description: `Maximum number of lists to return per page` }, + { name: 'cursor', type: 'string', required: false, description: `Pagination cursor from a previous response's nextCursor field` }, + ], + }, + { + name: 'leadiq_get_prospect', + description: `Retrieve a single prospect record by ID, including full contact details: emails, phones, LinkedIn, title, company, and location.`, + params: [ + { name: 'id', type: 'string', required: true, description: `ID of the prospect to retrieve` }, + ], + }, + { + name: 'leadiq_get_usage', + description: `Retrieve API credit usage for the current billing period — plan credit counts, usage caps, trial usage, and subscription status. Use this to monitor quota before making credit-consuming calls.`, + params: [], + }, + { + name: 'leadiq_grouped_advanced_search', + description: `Search LeadIQ's contact database with advanced filters and get results grouped by company. Each result contains a company record with its top matching contacts. Useful for account-based prospecting. Consumes credits per contact returned.`, + params: [ + { name: 'contact_filter', type: 'object', required: false, description: `Filter contacts by title, seniority, role, location, and more` }, + { name: 'company_filter', type: 'object', required: false, description: `Filter by company name, domain, industry, size, location, and more` }, + { name: 'contact_excluded_filter', type: 'object', required: false, description: `Exclude contacts matching these criteria` }, + { name: 'company_excluded_filter', type: 'object', required: false, description: `Exclude companies matching these criteria` }, + { name: 'skip', type: 'integer', required: false, description: `Number of companies to skip for pagination (default 0)` }, + { name: 'limit', type: 'integer', required: false, description: `Maximum number of companies to return (default 10)` }, + { name: 'limit_per_company', type: 'integer', required: false, description: `Maximum number of contacts to return per company (default 5)` }, + ], + }, + { + name: 'leadiq_search_company', + description: `Search for a company by name, domain, or LinkedIn URL. Returns firmographic data including employee count, industry, headquarters location, and funding information.`, + params: [ + { name: 'name', type: 'string', required: false, description: `Company name to search for` }, + { name: 'domain', type: 'string', required: false, description: `Company website domain` }, + { name: 'linkedin_url', type: 'string', required: false, description: `LinkedIn company page URL` }, + { name: 'linkedin_id', type: 'string', required: false, description: `LinkedIn company numeric ID` }, + { name: 'strict', type: 'boolean', required: false, description: `Enable strict matching — only return exact name or domain matches` }, + ], + }, + { + name: 'leadiq_search_people', + description: `Search for a person by LinkedIn URL, email, or name + company. At least one of: linkedin_url, email, or first_name+last_name must be provided. Returns verified work emails, direct dials, and current job details. Consumes LeadIQ credits per result.`, + params: [ + { name: 'first_name', type: 'string', required: false, description: `First name of the person to search for` }, + { name: 'last_name', type: 'string', required: false, description: `Last name of the person to search for` }, + { name: 'full_name', type: 'string', required: false, description: `Full name of the person (alternative to first_name + last_name)` }, + { name: 'email', type: 'string', required: false, description: `Known email address of the person` }, + { name: 'linkedin_url', type: 'string', required: false, description: `LinkedIn profile URL of the person` }, + { name: 'company_name', type: 'string', required: false, description: `Current company name of the person` }, + { name: 'company_domain', type: 'string', required: false, description: `Domain of the person's current company` }, + { name: 'contains_work_contact_info', type: 'boolean', required: false, description: `Only return results that have at least one work email or work phone` }, + { name: 'skip', type: 'integer', required: false, description: `Number of results to skip for pagination (default 0)` }, + { name: 'limit', type: 'integer', required: false, description: `Maximum number of results to return (default 10, max 25)` }, + ], + }, + { + name: 'leadiq_search_people_preview', + description: `Check whether LeadIQ has a work email or phone number for a person without consuming credits. Use this before calling Search People to avoid wasting credits on contacts with no data.`, + params: [ + { name: 'linkedin_url', type: 'string', required: false, description: `LinkedIn profile URL of the person` }, + { name: 'email', type: 'string', required: false, description: `Known email address of the person` }, + { name: 'full_name', type: 'string', required: false, description: `Full name of the person` }, + { name: 'first_name', type: 'string', required: false, description: `First name of the person` }, + { name: 'last_name', type: 'string', required: false, description: `Last name of the person` }, + { name: 'company_name', type: 'string', required: false, description: `Current company name of the person` }, + { name: 'company_domain', type: 'string', required: false, description: `Domain of the person's current company` }, + ], + }, + { + name: 'leadiq_submit_person_feedback', + description: `Report incorrect or outdated contact data back to LeadIQ to improve data quality. Mark an email or phone as correct or invalid, and optionally provide a correction or bounce reason.`, + params: [ + { name: 'value', type: 'string', required: true, description: `The contact info value being reported (email address or phone number)` }, + { name: 'status', type: 'string', required: false, description: `Whether the contact info is correct or invalid` }, + { name: 'type', type: 'string', required: false, description: `Type of contact information being reported` }, + { name: 'person_id', type: 'string', required: false, description: `LeadIQ person ID associated with the contact info` }, + { name: 'linkedin_url', type: 'string', required: false, description: `LinkedIn URL of the person the feedback is about` }, + { name: 'company_name', type: 'string', required: false, description: `Company name for additional context` }, + { name: 'company_domain', type: 'string', required: false, description: `Company domain for additional context` }, + { name: 'title', type: 'string', required: false, description: `Job title of the person at the time the contact info was used` }, + { name: 'invalid_reason', type: 'string', required: false, description: `Specific bounce or invalidity reason code (for invalid emails)` }, + ], + }, +] From b535b71ff78db2fd5c834af940e3e4c153269b58 Mon Sep 17 00:00:00 2001 From: Pranesh Date: Wed, 20 May 2026 16:39:54 +0530 Subject: [PATCH 2/3] =?UTF-8?q?resolve=20CodeRabbit=20comments:=20fix=20co?= =?UTF-8?q?mpany=5Fdomain=E2=86=92domain,=20frontmatter,=20add=20API=20key?= =?UTF-8?q?s=20screenshot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ion-after-setup-leadiq-common-workflows.mdx | 4 ++-- .../agent-connectors/_setup-leadiq.mdx | 4 +++- .../docs/agentkit/connectors/leadiq.mdx | 4 +++- .../docs/agent-connectors/leadiq/api-keys.png | Bin 0 -> 180228 bytes 4 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 src/src/assets/docs/agent-connectors/leadiq/api-keys.png diff --git a/src/components/templates/agent-connectors/_section-after-setup-leadiq-common-workflows.mdx b/src/components/templates/agent-connectors/_section-after-setup-leadiq-common-workflows.mdx index ccb07eba8..34128e3d5 100644 --- a/src/components/templates/agent-connectors/_section-after-setup-leadiq-common-workflows.mdx +++ b/src/components/templates/agent-connectors/_section-after-setup-leadiq-common-workflows.mdx @@ -152,7 +152,7 @@ Use `leadiq_search_people_preview` to check whether LeadIQ has a work email or p connectionName: 'leadiq', identifier: 'user_123', toolInput: { - company_domain: 'acme.com', + domain: 'acme.com', }, }); console.log(company.data?.data?.searchCompany); @@ -164,7 +164,7 @@ Use `leadiq_search_people_preview` to check whether LeadIQ has a work email or p tool_name="leadiq_search_company", connection_name="leadiq", identifier="user_123", - tool_input={"company_domain": "acme.com"}, + tool_input={"domain": "acme.com"}, ) print(company.data) ``` diff --git a/src/components/templates/agent-connectors/_setup-leadiq.mdx b/src/components/templates/agent-connectors/_setup-leadiq.mdx index d2bc171cb..a98d97fe5 100644 --- a/src/components/templates/agent-connectors/_setup-leadiq.mdx +++ b/src/components/templates/agent-connectors/_setup-leadiq.mdx @@ -6,7 +6,9 @@ Register your LeadIQ API key with Scalekit so it stores it securely and injects 1. ### Get your LeadIQ API key - Sign in to [LeadIQ](https://app.leadiq.com) and go to **Settings** → **API Keys**. - - Copy an existing key or click **Generate new API key** to create one dedicated to this integration. + - Copy the **Secret API key** value, or click **Generate new API key** to create one dedicated to this integration. + + ![LeadIQ Settings API Keys page showing Secret API key and Secret Base64 API key fields](@/assets/docs/agent-connectors/leadiq/api-keys.png)