Skip to main content
Glama
649,985 tools. Updated 2026-10-11 01:37

"A platform for finding jobs on LinkedIn" matching MCP tools:

  • Schedule multiple posts at once from CSV content. USE THIS WHEN: • User has a spreadsheet or list of posts to schedule • Planning a content calendar for a month • Migrating content from another tool CSV FORMAT (required columns): • platform: linkedin, instagram, x, tiktok, threads • scheduled_time: ISO 8601 format (e.g., 2024-02-15T10:00:00Z) • text: Post content/caption OPTIONAL COLUMNS: • media_url: Image or video URL • first_comment: First comment to add (Instagram/LinkedIn) • hashtags: Additional hashtags to append PROCESS: 1. First call with validate_only: true to check for errors 2. Review validation report with user 3. Call again with validate_only: false to execute import
    ConnectorNo auth
  • Search a single network for posts matching a query, returned as the unified Post[] schema and tagged with its platform. Keyless on TikTok, YouTube, and Pinterest. Instagram, Twitter/X, Reddit, and Facebook need operator-side credentials (returns credentials_required until set). Snapchat and Threads do not support keyless search (returns not_supported); LinkedIn is quarantined. To fan one query across every network at once, use search_all.
    ConnectorNo auth
  • Update the LinkedIn channel settings of an existing DRAFT wizard campaign: native objective, bidding optimization goal (including Reach), bid strategy with manual bid amount, and the LinkedIn conversion actions the campaign optimizes toward. These are the settings the platform UI shows in the LinkedIn channel drawer of the campaign draft page (Native Objective, Bidding Optimization Goal, Bid, Conversion Actions). The campaign MUST already have its LinkedIn channel enabled (via create_campaign / add_and_edit_campaign_elements with a `linkedin` block). WARNING: DRAFT-ONLY: the platform rejects these edits once the campaign is Launching/Launched. KEYWORDS: linkedin, linkedin campaign, linkedin settings, campaign settings, draft campaign, objective, native objective, brand awareness, website visits, engagement, video views, bidding optimization goal, optimization goal, reach, impressions, landing page clicks, engagement clicks, bid, bid strategy, auto bid, manual bid, maximum delivery, conversion, conversions, conversion actions, conversion tracking, insight tag, settings WHEN TO USE: - Set the LinkedIn native objective (e.g. Brand Awareness instead of the default Engagement) - Optimize a Brand Awareness campaign for REACH instead of IMPRESSIONS - Switch between auto bid (LinkedIn maximum delivery) and a manual bid - Pick which LinkedIn conversion actions the campaign optimizes toward and reports on PARAMETERS (campaign_id required; everything else optional, and an unspecified setting keeps its current value on the channel): - campaign_id: the wizard campaign ID - objective: BRAND_AWARENESS | WEBSITE_VISIT | ENGAGEMENT | VIDEO_VIEW, the LinkedIn native objective. Only selectable on Brand Awareness (CTR) campaigns: a Lead Gen (CPL) campaign derives it from its offer at launch (lead-gen form -> LEAD_GENERATION, landing page -> WEBSITE_CONVERSION). The platform default for a new LinkedIn channel is ENGAGEMENT. Every ad already on the channel must be supported by the objective (VIDEO_VIEW is video-only, MESSAGE ads only fit WEBSITE_VISIT, DOCUMENT ads lock the objective, a video-only channel accepts only ENGAGEMENT or VIDEO_VIEW). A channel holding CTV ads is always Brand Awareness / Reach at launch and cannot be changed here. Changing the objective also resets the cost type and the bidding optimization goal to the objective's default (BRAND_AWARENESS -> IMPRESSIONS, WEBSITE_VISIT -> LANDING_PAGE_CLICKS, ENGAGEMENT -> ENGAGEMENT_CLICKS, VIDEO_VIEW -> VIDEO_VIEWS), so pass bidding_optimization_goal in the same call when you want something else. - bidding_optimization_goal: what LinkedIn optimizes delivery for. Allowed per objective: BRAND_AWARENESS -> IMPRESSIONS | REACH; WEBSITE_VISIT -> LANDING_PAGE_CLICKS | IMPRESSIONS; ENGAGEMENT -> ENGAGEMENT_CLICKS | IMPRESSIONS; VIDEO_VIEW -> VIDEO_VIEWS | IMPRESSIONS. Conversation and Message ads are always IMPRESSIONS. CTR campaigns only. - bid_strategy: AUTO_BID (LinkedIn "maximum delivery", what the campaign builder applies by default) or MANUAL_BID (needs bid_amount). CTV ads REQUIRE AUTO_BID; Spotlight and Text ads REQUIRE MANUAL_BID. - bid_amount: manual bid in the account currency, used only with MANUAL_BID. - conversion_action_ids: ids of LinkedIn conversion actions (from list_linkedin_conversions) the campaign should optimize toward and count as conversions: website visits, URL-rule page views, lead form fills. REPLACES the current selection; pass [] to clear it (the campaign then falls back to the account's default Insight Tag URL match). Every id must exist and be enabled on the connected LinkedIn account, or launch validation fails. NOTE: the platform UI only shows this picker for campaigns with landing-page offers and an objective other than Brand Awareness; ids stored outside that case are still sent to LinkedIn at launch, but that path is not exercised by the UI. NOT SETTABLE ANYWHERE IN THE PLATFORM (say so instead of promising them): LinkedIn Audience Network on/off and its category exclusions, audience expansion (campaigns always launch with expansion OFF), frequency caps, Thought Leader ads. LinkedIn geo targeting is not a channel setting either: it lives on the audience / target group. EXAMPLES: Brand Awareness optimized for Reach on auto bid: update_linkedin_channel_settings({"campaign_id": 12345, "objective": "BRAND_AWARENESS", "bidding_optimization_goal": "REACH", "bid_strategy": "AUTO_BID"}) Track two conversion actions on a Website Visits campaign: update_linkedin_channel_settings({"campaign_id": 12345, "conversion_action_ids": ["123456", "234567"]}) RESPONSE: {success, campaign_id, channel_id, campaign_status, campaign_goal, channel_ad_types, applied:{...}, errors?}. `applied` echoes exactly what was pushed to the platform. INTEGRATION WITH OTHER TOOLS: - list_linkedin_conversions lists the conversion actions available on the account - search_campaigns_by_names / get_campaign_by_wizard_id to find the campaign - The LinkedIn channel is enabled by create_campaign or add_and_edit_campaign_elements - check_campaign_launch_readiness validates the result before launch
    Connector
    Destructive
    API key
  • Create a new or update an existing LinkedIn Document Ad on the Metadata platform. A LinkedIn Document Ad promotes a multi-page document (a PDF — e.g. a whitepaper, ebook, report, or guide) natively in the LinkedIn feed. Members preview the first few pages inline, then unlock the full document (typically gated behind a lead form). It is LinkedIn-only. IMPORTANT: This tool is ONLY for LinkedIn Document Ads (channelType=LINKEDIN, adType=DOCUMENT). For IMAGE/GIF ads use create_update_image_ad; for VIDEO ads use create_update_video_ad; for CONVO use create_update_convo_ad; for Sponsored Messaging use create_update_linkedin_message_ad. BEHAVIOR: - If `id` is NOT provided -> creates a new Document Ad. - If `id` IS provided -> updates the existing Document Ad with that ID. CREATIVE WORKFLOW (MUST DO BEFORE CALLING): 1. The document must already exist in the creative library as a DOCUMENT asset. Find it with `search_library_creatives_by_name(contentTypes="DOCUMENT")`, or confirm a specific id with `fetch_creative_details`. 2. Pass that asset's integer id as `libraryId`. It MUST be a DOCUMENT-type creative — an image or video id will be rejected by LinkedIn. Unlike IMAGE/VIDEO ads there is NO display URL: the gated document is the destination, so no link field is accepted. CHARACTER LIMITS (mirror the LinkedIn ad limits the platform UI enforces): - name <= 50 chars (ad name in the library) - headline <= 200 chars (the headline shown with the document) - text <= 3000 chars (the introductory text) INPUT PARAMETERS: - id (optional): Existing Document Ad ID. Provide to UPDATE; omit to CREATE. - name (required, <= 50): Ad name in the library. - libraryId (required): Integer id of the DOCUMENT creative in the library (contentType=DOCUMENT). NOT an image/video id. - headline (required, <= 200): Headline shown with the document. - text (required, <= 3000): Introductory text shown with the document. - ctaType (optional, default UNLOCK_FULL_DOCUMENT): the call-to-action. UNLOCK_FULL_DOCUMENT is the document-gate CTA. - maxPreviewPages (optional, default 1): how many pages of the document are previewable before the unlock gate. Positive integer. - completionStatus (optional, default DRAFT): "DRAFT" or "COMPLETED". Use COMPLETED only when every required field is final. WHEN TO USE: - User asks to "create a LinkedIn Document Ad" / "whitepaper ad" / "promote a PDF / ebook / report on LinkedIn". - User wants to update an existing Document Ad. WHEN NOT TO USE: - Feed image / GIF ad -> create_update_image_ad - Feed video ad -> create_update_video_ad - Branching conversation flow -> create_update_convo_ad - One-shot Sponsored Message -> create_update_linkedin_message_ad EXAMPLE USAGE (Create): create_update_document_ad( name="Q3_Whitepaper_LI_Document", libraryId=15791, headline="The 2026 State of B2B Marketing", text="Download our latest research on pipeline attribution.", maxPreviewPages=2, ) EXAMPLE USAGE (Update): create_update_document_ad( id=29144, name="Q3_Whitepaper_LI_Document_v2", libraryId=15791, headline="The 2026 State of B2B Marketing (Updated)", text="Now with fresh benchmarks.", ) COMMON MISTAKES: - Passing an IMAGE/VIDEO libraryId — the asset must be a DOCUMENT (use search_library_creatives_by_name(contentTypes="DOCUMENT")). - Passing a display / landing URL — Document Ads have no link field. - Using this tool for a non-LinkedIn channel — Document Ads are LinkedIn-only.
    Connector
    Destructive
    API key
  • Use for general web research (company info, news, job portals). For LinkedIn profiles use search_linkedin_people; to read one company's own site use read_company_website. General-purpose Google search — returns organic results for any query. Unlike search_google_xray (LinkedIn-only), this searches the entire web. Useful for finding job postings on portals (jobs.cz, prace.cz, profesia.sk, indeed.com), company info, news, or any other web content. Results are NOT saved to contacts — use this for research and discovery. Capped at 4 calls per minute to protect the Serper/Google budget.
    ConnectorAPI key
  • Job/opportunity search with the full filter set. Location filtering works: pass `locations` a LinkedIn geo id (e.g. 101570771 for Tel Aviv-Yafo) — see that parameter for how to find one, and note it is an EXACT match, so use a city id rather than a country id. Still id-typed and not yet usable: titles, industries, functions, benefits, commitments. Offset-paginated. data.jobs[].id is the opportunityEntityId consumed by /jobs/details-v2, /jobs/similar, /jobs/people-also-viewed, /jobs/hiring-team. (Costs 10 Zooq credits.)
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to search and analyze LinkedIn jobs with advanced filters, salary requirements, and market insights through natural language.
    21 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables users to search LinkedIn's public job listings with advanced filters like location, salary, and experience level. It allows MCP-compatible clients to retrieve real-time job opportunities without requiring LinkedIn authentication or API keys.
    1
    2
    MIT

Matching MCP Connectors

  • LinkedIn: The LinkedIn Data API offers access to detailed information on individuals, companies.

  • LinkedIn data for AI agents: search, profiles, companies, posts. Free key, self-minted, no signup.

  • Job/opportunity search with the full filter set. Location filtering works: pass `locations` a LinkedIn geo id (e.g. 101570771 for Tel Aviv-Yafo) — see that parameter for how to find one, and note it is an EXACT match, so use a city id rather than a country id. Still id-typed and not yet usable: titles, industries, functions, benefits, commitments. Offset-paginated. data.jobs[].id is the opportunityEntityId consumed by /jobs/details-v2, /jobs/similar, /jobs/people-also-viewed, /jobs/hiring-team. (Costs 10 Zooq credits.)
    ConnectorNo auth
  • Ask CampaignStack to send one connection request from a LinkedIn account the workspace owner connected. Call this when the user has named one specific person and confirmed sending the request. platform is required ("linkedin"; connection requests are a LinkedIn-only concept, and on other networks you follow instead with campaignstack_follow_profile). Name the person with leadId, which is the supported form; profileUrl is accepted for someone already in the workspace. An optional note is capped at 300 characters by LinkedIn. The workspace's only connected LinkedIn account is used automatically, or pass accountId (campaignstack_get_accounts). This reaches a real person. Before calling it, tell the user exactly who it goes to and read the wording back to them, and wait for an explicit yes. It goes out as soon as this call succeeds: there is no draft state and nothing to recall. One person per call. There is no bulk form, and calling this in a loop over a list is not the supported way to reach a list: add the leads with campaignstack_edit_lead_list and run a workflow over it with campaignstack_trigger_workflow, which paces the sends and applies the review step the workspace configured. Sending is paced by CampaignStack's own daily and weekly limits and business hours, which are set by a human in the app and are not writable from here; see overrideOwnLimits before asking for an exception.
    Connector
    Destructive
    API key
  • List the LinkedIn conversion actions (Insight Tag conversions) available on the connected LinkedIn ad account, with id, name, type and whether each is enabled. Use it to pick the ids for update_linkedin_channel_settings.conversion_action_ids (which conversions a campaign optimizes toward and reports on), and to answer "which LinkedIn conversions do we track?" or "is the /pricing page conversion set up?". KEYWORDS: linkedin, conversions, conversion actions, conversion tracking, insight tag, website visit conversion, lead gen form conversion, url conversion, page visit, pixel Requires a connected LinkedIn channel (check get_integrations_status). Conversion actions are created in LinkedIn Campaign Manager, not here: when the one the user needs (for example a URL rule for /pricing) is missing, say so and point them at Campaign Manager instead of inventing an id. RESPONSE: {success, count, conversions:[{id, name, type, enabled, last_received_at}]} `enabled: false` conversions cannot be attached to a campaign (launch validation rejects them). `last_received_at` is when LinkedIn last recorded a hit; null means the conversion has never fired.
    ConnectorAPI key
  • Create OR update an IMAGE (or GIF) ad on Facebook, Instagram, LinkedIn, and/or Reddit. TO UPDATE: include `id`; to CREATE: omit it. CREATIVE WORKFLOW: 1. Upload the image/GIF via `upload_image_creative` → response gives `id` (the imageLibraryId). 2. Pass that integer as `creativeID` here. - Need a new image? `generate_brand_creative` → `upload_image_creative` → `create_update_image_ad`. ALSO KNOWN AS: create image ad, update image ad, edit image ad, modify image ad, image creative, post image, image post, photo ad. KEYWORDS: image, gif, create, update, edit, modify, ad, ads, image ad, image ads, image creative, photo, picture, banner, image campaign, image upload, LinkedIn image, Facebook image, Instagram image, Reddit image, IG post. CLIENT-SIDE VALIDATION (refuses what the platform UI would also reject): - adName: required, max 50 chars, pattern `[a-zA-Z0-9 _.?,:'/+\-=&;%$#\[\]|()]`. - creativeID: required integer (imageLibraryId from `upload_image_creative`). - Landing-page URL is per channel (`facebookDisplayURL`, `instagramDisplayURL`, `linkedinDisplayURL`, `redditDisplayURL`). Required for FB/IG/LinkedIn, optional for Reddit. Per-channel caps: LinkedIn max 2000, Reddit max 100, FB/IG no length rule. URL format accepts both `metadata.io` and `https://metadata.io` for IMAGE ads. If only one channel's URL is set the server fans it across the other targeted channels; each channel's cap is then enforced per channel. - LinkedIn: linkedinText (required, max 3000), linkedinHeadline (required, max 200), linkedinDescription (optional, max 300 — IMAGE only), linkedinCTA (required, must be a valid LinkedIn CTA enum). - Facebook: metaCTA (required), facebookText (required, no length rule on Facebook), facebookHeadline (required, max 250), facebookDescription (optional, max 300). - Instagram: metaCTA (required), instagramText (required, max 125), instagramHeadline (required, max 40), instagramDescription (optional, max 30). - FB+IG ad with one body text: set just one of facebookText / instagramText and the server copies it across (capped at the receiving channel's limit). Set both explicitly only when you want per-channel copy. - Reddit: redditHeadline (required, max 300), redditCTA (required, must be a valid Reddit CTA enum). redditThumbnailLibraryId is optional and defaults to creativeID. COMMON CTA VALUES: - LinkedIn: LEARN_MORE, REGISTER, APPLY_NOW, DOWNLOAD, JOIN, SIGN_UP, GET_QUOTE, ATTEND, REQUEST_DEMO, SUBSCRIBE. (UNLOCK_FULL_DOCUMENT is DOCUMENT-only — use create_update_document_ad, not this tool.) - Facebook/Instagram: APPLY_NOW, DOWNLOAD, GET_QUOTE, LEARN_MORE, SIGN_UP, SUBSCRIBE. (SCREAMING_SNAKE form only; the platform supports a strict subset of Meta's native catalog. Out-of-set values like BOOK_NOW / GET_STARTED are rejected.) - Reddit: Apply Now, Contact Us, Download, Get a Quote, Learn More, Play Now, Sign Up, View More, Watch Now, Book Now, Listen Now, Read More, Subscribe. See `create_update_video_ad` for video-creative ads (different libraryId source + stricter URL format).
    Connector
    Destructive
    API key
  • Create OR update a LinkedIn CTV (Connected TV) video ad. LinkedIn only. TO UPDATE: include `id`; to CREATE: omit it. CTV ads play on streaming TV inventory through the LinkedIn Audience Network. On the platform they are LinkedIn VIDEO ads with adType=CTV, and they carry rules the campaign must meet: - Campaign type Brand Awareness only (never Lead Gen); the LinkedIn channel launches as objective BRAND_AWARENESS optimized for REACH. - The LinkedIn channel MUST use AUTO_BID (a manual bid fails pre-launch validation); `update_linkedin_channel_settings` sets it. - Audiences and target groups may target the United States and Canada ONLY; any other location fails pre-launch validation. - Video spec, enforced when the creative is uploaded: 6 to 60 seconds, 1920x1080 or 1280x720, at most 500 MB. LinkedIn recommends exactly 15, 30, 45 or 60 seconds for delivery. CREATIVE WORKFLOW: 1. Upload the video via `upload_video_creative` with `usage_type: "CTV"` -> response gives `id` (the videoLibraryId). The platform runs the CTV checks at that step and rejects a non-compliant file. 2. Pass that integer as `creativeID` here. A video uploaded without the CTV usage type is not eligible for a CTV ad. 3. Ann attaches the returned ad id to a Brand Awareness campaign's LinkedIn channel like any other ad. ALSO KNOWN AS: connected tv ad, ctv ad, streaming tv ad, linkedin tv ad, ott ad, tv commercial on linkedin. KEYWORDS: ctv, connected tv, streaming, tv, ott, linkedin ctv, video, brand awareness, reach, audience network, commercial. CLIENT-SIDE VALIDATION (refuses what the platform UI would also reject): - adName: required, max 50 chars, same pattern as the other ad tools. - creativeID: required integer (videoLibraryId). - linkedinDisplayURL: required, ABSOLUTE (http:// or https://), max 2000. - linkedinHeadline: required, max 200. linkedinCTA: required enum. - linkedinText: optional, max 3000. No description field (same DTO as LinkedIn VIDEO ads). COMMON CTA VALUES: same as `create_update_video_ad` on LinkedIn. RESPONSE: same envelope as `create_update_video_ad` (`created_ads[]` with adType "CTV", channelType "LINKEDIN"). See `create_update_video_ad` for in-feed video ads and `create_update_image_ad` for image / GIF ads.
    Connector
    Destructive
    API key
  • Create a new or update an existing LinkedIn Message Ad on the Metadata platform. A LinkedIn Message Ad is a Sponsored Messaging asset: a one-shot direct message delivered to a member's LinkedIn inbox from a specific sender, with a subject line, a body, an optional banner image, and a single call-to-action button. It is NOT a Conversation Ad — there is no branching step graph. Use create_update_convo_ad for multi-step convos. IMPORTANT: This tool is ONLY for LinkedIn Sponsored Messaging (channelType=LINKEDIN, adType=MESSAGE). For IMAGE/GIF ads use create_update_image_ad; for VIDEO ads use create_update_video_ad; for CONVO use create_update_convo_ad; for Google Ads text ads use create_update_google_ads_ad; for DOCUMENT ads use create_update_document_ad. SPOTLIGHT / FOLLOWER are not yet covered by the dedicated tools; LinkedIn CTV (Connected TV) ads use create_update_ctv_ad. BEHAVIOR: - If `id` is NOT provided → creates a new Message Ad. - If `id` IS provided → updates the existing Message Ad with that ID. PREREQUISITES (MUST DO BEFORE CALLING): 1. Call get_linkedin_senders to fetch a valid (senderId, senderName) pair. Message Ads share LinkedIn's sponsored-messaging sender allow-list with Conversation Ads — both pull from the same endpoint. Do NOT invent sender IDs. 2. If using a banner image: upload it via upload_image_creative and pass the returned imageLibraryId as `bannerCreativeLibraryId`. The banner is OPTIONAL — omit the field to skip it. LinkedIn requires an IMAGE creative ≤ 2 MB; oversize banners are rejected upstream. CHARACTER LIMITS (enforced by the platform; mirror the UI validator at metadata-ui-v3/.../li/message/edit/validation.ts): - name ≤ 50 chars (ad name in the library) - headlineText ≤ 60 chars (the message subject line) - messageText ≤ 2000 chars (the message body) - actionText ≤ 20 chars (the CTA button label) PERSONALIZATION MACROS IN messageText: The body supports LinkedIn personalization macros. Pass them verbatim inside `%...%` — the platform substitutes at send time. The validator accepts ONLY these five macros (any other %...% token is rejected): %FIRSTNAME% %LASTNAME% %COMPANYNAME% %JOBTITLE% %INDUSTRY% Do not use `{firstName}` or any other syntax — only `%MACRO%`. USAGE INSTRUCTIONS FOR LLM: Use this tool when users want to: - Create a new LinkedIn Sponsored Message ad - Update an existing Message Ad (subject, body, CTA, sender, or banner) WHEN TO USE: - User asks "create a LinkedIn Message Ad" / "InMail ad" / "Sponsored Messaging ad" - User wants a one-shot LinkedIn DM with subject + body + CTA - User wants to update an existing Message Ad WHEN NOT TO USE: - User wants a branching conversation flow → use create_update_convo_ad - User wants a feed image / GIF ad → use create_update_image_ad - User wants a feed video ad → use create_update_video_ad - User wants a Google Ads text ad → use create_update_google_ads_ad INPUT PARAMETERS: - id (optional): Existing Message Ad ID. Provide to UPDATE; omit to CREATE. - name (required, ≤ 50): Ad name in the library. - senderId (required): LinkedIn sender ID from get_linkedin_senders. - senderName (required): Display name matching senderId. - headlineText (required, ≤ 60): Subject line shown in the inbox. - messageText (required, ≤ 2000): Message body. Supports the five %MACRO% tokens listed above. - actionText (required, ≤ 20): CTA button label. - bannerCreativeLibraryId (optional): imageLibraryId of the banner image. Upload first via upload_image_creative. Omit to skip the banner. - completionStatus (optional, default DRAFT): "DRAFT" or "COMPLETED". Use COMPLETED only when every required field is final. EXAMPLE USAGE (Create): create_update_linkedin_message_ad( name="Q1_Demo_Outreach_LI_Message", senderId="fQdRPtecbv", senderName="Josh Desmarais", headlineText="Quick question about your marketing stack", messageText="Hi %FIRSTNAME%, as a %JOBTITLE% at %COMPANYNAME% you know how hard pipeline attribution is. Want a 15-min walkthrough?", actionText="Book a demo", bannerCreativeLibraryId=482931, ) EXAMPLE USAGE (Update): create_update_linkedin_message_ad( id=29144, name="Q1_Demo_Outreach_LI_Message_v2", senderId="fQdRPtecbv", senderName="Josh Desmarais", headlineText="Following up — quick demo?", messageText="Hi %FIRSTNAME%, circling back…", actionText="Book a demo", ) SUCCESS RESPONSE (mirrors create_update_convo_ad): { "success": true, "id": 29144, "ad_url": "https://platform.metadata.io/hub/library/ads?adId=29144", "name": "Q1_Demo_Outreach_LI_Message", "channelType": "LINKEDIN", "adType": "MESSAGE", "completionStatus": "DRAFT", "request": { "message": { ... } } } COMMON MISTAKES: - Inventing a senderId — IDs MUST come from get_linkedin_senders. - Passing a banner URL instead of an imageLibraryId — upload first. - Using `{firstName}`-style macros — LinkedIn uses `%FIRSTNAME%`. - Using an unsupported macro (anything outside the five listed) — the platform/UI validator rejects it. - Using this tool for a multi-step flow — use create_update_convo_ad.
    Connector
    Destructive
    API key
  • Create a **G2 Intent - LinkedIn Native (Dynamic)** audience (platform `customAudienceType=DYNAMIC_G2`). AUDIENCE TYPE (mirrors the UI's "Audience Type" dropdown): • UI label: "G2 Intent - LinkedIn Native (Dynamic)" • Platform enum: DYNAMIC_G2 • Refreshes daily as G2 intent signals update; targets LinkedIn natively. PREREQUISITE: • Both G2 and LinkedIn integrations MUST be connected. If either is missing, do NOT call this tool — recommend `create_firmographic_audience` instead. WHEN TO USE (exact user phrasing this tool should match): • "G2 Intent - LinkedIn Native (Dynamic)" • "G2 LinkedIn Native Dynamic" • "LinkedIn native G2 intent audience" • The user explicitly mentions BOTH G2 intent AND LinkedIn native targeting. WHEN NOT TO USE: • If the user asked for "G2 Intent (Dynamic)" without "LinkedIn Native" → use `create_g2_intent_dynamic_audience`. • If the user asked for "G2 Intent (Static)" → use `create_g2_intent_static_audience`. BUYING STAGES — REQUIRED BY THE PLATFORM: The platform UI marks Buying Stages as required. If the user did not name any stages, STOP and ask the user which of AWARENESS / CONSIDERATION / DECISION to target. DO NOT silently default — that produced wrong audiences in PRD-29702 / PRD-29703. CRITERIA (LinkedIn-native shapes; free-text fields are resolved server-side via the LinkedIn references API): • employees — LinkedIn-native employee ranges. Valid labels: see the schema (e.g. "201-500", "501-1000", "1001-5000"). • revenues — LinkedIn-native revenue ranges (e.g. "$1M-$10M", "$10M-$100M"). • company_names — free-text company names (resolved to LinkedIn company IDs). • location_country_ids — country IDs (e.g. 229=US, 228=UK). • job_titles — free-text titles (resolved to LinkedIn job-title IDs). • skills — free-text professional skills (resolved to LinkedIn skill IDs). PARAMETERS: • name (required, ≤ 50 chars) • intent_days (required, 1-365) • buying_stages (REQUIRED by platform — ask the user if missing; do NOT default) • employees, revenues, company_names, location_country_ids, job_titles, skills (all optional) RETURNS: id, audience_id, audience_name, audience_type (DYNAMIC_G2), status, buying_stages, intent_days, expectedNumberOfCompanies, expectedNumberOfContacts.
    ConnectorAPI key
  • [Ids in: draftId: job id, from list_job_postings → jobPostings[].id. Ids out: jobId: job id.] Publish ONE job posting draft on LinkedIn. mode FREE publishes it without paying. mode PROMOTED or PROMOTED_PLUS SPENDS MONEY from the payment method on the LinkedIn account, up to the budget given (or LinkedIn's suggested budget when none is given) — state the amount to the user and get an explicit yes first. Once published the posting is public. If LinkedIn asks to verify your right to post for that company, the answer says so; send the code with solve_job_posting_checkpoint. Counts against a daily allowance (20 a day).
    Connector
    Destructive
    OAuth
  • looot: free overview of the data API catalog: what exists, as categories > platforms > jobs, with counts at every level: providerCount (distinct providers), endpointCount, runnableCount (runnable without your own key: keyless or a platform key exists), cheapestPerCall and cheapestPerResult (lowest price in dollars, the price you pay, null when nothing is priced that way; the two are never compared). Same body as GET /v1/catalog/overview with the same arguments. No arguments: depth summary (totals plus one line per category, a few KB). depth platforms adds each category's platforms, jobs adds each platform's jobs, full is the whole document (large). category or platform answers only that branch (default depth platforms; pass depth jobs for its jobs, which can be hundreds of KB for a big branch such as "other", so prefer topic) and then has no totals. topic (e.g. "email", "phone") answers the matching jobs, at most 25, with truncated when there are more. Unknown ids answer unknown_category or unknown_platform. Follow up with search_catalog or discover to pick an endpoint for a job.
    ConnectorAPI key
  • P79 — set per-workspace publishing target defaults so chiefmo_approve_action({ autoExecute: true }) doesn't need the agent to pass platform / recipient ids on every call. One-time setup per workspace. channelTargets is a map { linkedin: { accountId }, x: { accountId }, email: { fromEmail, recipientListId } }. Pass partial maps to update specific channels; pass `null` for a channel value to remove it. Persisted via deps.publishingTargetsStore when wired, otherwise in-process Map (Vercel function lifetime). Returns the merged channelTargets + storage location ('persistent' or 'in_memory').
    ConnectorNo auth
  • P79 — set per-workspace publishing target defaults so chiefmo_approve_action({ autoExecute: true }) doesn't need the agent to pass platform / recipient ids on every call. One-time setup per workspace. channelTargets is a map { linkedin: { accountId }, x: { accountId }, email: { fromEmail, recipientListId } }. Pass partial maps to update specific channels; pass `null` for a channel value to remove it. Persisted via deps.publishingTargetsStore when wired, otherwise in-process Map (Vercel function lifetime). Returns the merged channelTargets + storage location ('persistent' or 'in_memory').
    ConnectorNo auth
  • Default tool for finding people on LinkedIn from criteria (company, role, department). With a ready search URL use search_linkedin_navigator; for one known profile URL use upsert_linkedin_contact. Search LinkedIn people. RECOMMENDED FOR PROSPECTING: set decisionMakers:true, provide company, departments and limit 20-30. Salesbot resolves the company, performs ONE company-scoped provider search (Sales Navigator also applies seniority), then ranks the returned senior employees locally by department. This is broader and safer than retrying exact titles. Use title/titles only when an exact role is required. EXISTING CONNECTIONS reads only the local cache and consumes zero search quota. The workspace setting selects Standard/Classic or Sales Navigator automatically. Respect retry_after; never immediately retry a protected or timed-out request. On LINKEDIN_PROVIDER_TIMEOUT use search_google_xray, then retry LinkedIn only after the stated delay.
    ConnectorAPI key
  • Read-only public health probe for the IntoDNS.ai backend itself, not a target domain. Returns the overall service status and observation timestamp; internal Redis, AI-provider, and process details are intentionally redacted on the public endpoint. Use as a pre-flight check before batch jobs or to distinguish a service incident from a real DNS finding; use get_stats for public usage counters instead. Single unauthenticated GET with no destructive actions.
    ConnectorNo auth
  • Get remediation advice for a single finding as GitHub-flavored markdown. When AI Assist is enabled and within budget this is a suggestion written for this exact finding; otherwise it falls back to the static guidance-library text and says so in 'source'. Unlike the other reads this one can spend AI budget, which is why it is a separate tool. Use this for advice on one finding; for the whole library use list_security_guidance. Requires project context.
    ConnectorAPI key
  • List the Facebook Pages, Instagram Business accounts, X accounts and TikTok accounts connected in Multichannel Boost, with channel id, platform, name, handle and status. Use the ids with publish_to_channels, or with schedule_post / set_post_channels to add them to a LinkedIn post. Facebook and Instagram can publish today.
    ConnectorOAuth