Skip to main content
Glama
607,305 tools. Updated 2026-09-24 16:04

"A tool for automating LinkedIn posts with personalized content generation" 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
  • Lists LinkedIn Ads entities of any type (LinkedIn Ads tool). IMPORTANT — LinkedIn UI naming vs API naming: - LinkedIn UI "Campaigns" = API "campaign_groups" (use entity_type="campaign_groups") - LinkedIn UI "Ad sets" = API "campaigns" (use entity_type="campaigns") - LinkedIn UI "Ads" = API "creatives" (use entity_type="creatives") When a user asks about "campaigns", they usually mean campaign_groups. entity_type options: - "campaign_groups": Lists campaigns (LinkedIn UI name). Supports status filter: ACTIVE, PAUSED, ARCHIVED, DRAFT. Supports include_performance with start_date/end_date. - "campaigns": Lists ad sets (LinkedIn UI name). Supports status filter and campaign_group_id to show ad sets under a specific campaign. - "creatives": Lists ads (LinkedIn UI name) with format detection (DOCUMENT, VIDEO, SINGLE_IMAGE, CAROUSEL, etc.). Supports campaign_ids filter and include_content. IMPORTANT: When status="ACTIVE", auto-filters to only include ads from ACTIVE ad sets — so you get truly serving ads. - "conversions": Lists conversion tracking rules. Status filter = enabled_only (pass status="enabled"). - "campaign_conversions": Lists conversion-rule ↔ campaign associations. Requires campaign_ids. Returns one row per (campaign_id, conversion_id) pairing. - "lead_forms": Lists lead generation forms. Supports status filter: DRAFT, PUBLISHED, ARCHIVED. - "saved_audiences": Lists matched/DMP audiences. Paginates fully across the account (no 10-row cap). Returns the LINKEDIN destination's status as `status` (typical values: READY, BUILDING, PROCESSING, ARCHIVED, FAILED) plus `destinationSegmentId` (the `urn:li:adSegment:...` URN to use in targeting criteria). Supports `name_contains` for client-side substring search (matched audiences are NOT typeahead-searchable via the LinkedIn API — list and filter is the supported pattern). - "targeting_audiences": Lists saved targeting audience templates. Supports name_contains. - "targeting_facets": Lists all available targeting facets/dimensions. No account_id needed. Args: entity_type: What to list. One of: campaign_groups, campaigns, creatives, conversions, lead_forms, saved_audiences, targeting_audiences, targeting_facets. account_id: The LinkedIn Ad Account ID (required for most entity types, not needed for targeting_facets). status: Optional status filter (meaning varies by entity type). For creatives with status="ACTIVE", cascades through campaign status. campaign_ids: Optional campaign ID filter (for creatives/ads). campaign_group_id: Optional campaign group ID filter (for campaigns/ad sets — show ad sets under a specific campaign). include_content: Include raw content details for creatives. Default: false. include_performance: Include performance metrics for campaign_groups (requires start_date/end_date). Default: false. start_date: Start date for performance data (YYYY-MM-DD). end_date: End date for performance data (YYYY-MM-DD). limit: Maximum number of results to return. Default: 100. name_contains: Case-insensitive substring filter on entity name (saved_audiences, targeting_audiences).
    ConnectorOAuth
  • 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
  • Turn a LinkedIn account's connection watcher, message watcher or own-posts watcher on or off. The first enable creates the agent and its template workflow (welcome messages, reply drafts or engager follow-ups, review-first); later calls resume or pause it. The own-posts watcher finds the account's new posts on LinkedIn every hour, published through CampaignStack or not, and tracks who reacts and comments. Call this when the user names an account and kind to turn on or off; say both before calling, since enabling starts drafting outbound the workspace did not have before. One watcher per kind per account across all workspaces (DUPLICATE_*_EXTERNAL otherwise); needs a live session (AGENT_ACCOUNT_UNAVAILABLE otherwise). Not for other targets: campaignstack_create_signal_agent covers those.
    ConnectorAPI key
  • The user's LinkedIn post analytics from LinkedIn's own API (their connected account) — impressions, unique members reached, reactions, comments, and reshares. Use for questions like 'how many impressions did I get last month?' or 'how are my posts performing?'. Omit dates for lifetime totals; pass start_date/end_date for a window; set daily=true (with one specific metric) for a per-day series to describe trends. Numbers are live from LinkedIn, unlike get_my_linkedin_posts whose per-post counts come from a periodic sync.
    ConnectorNo auth
  • Per-post metrics for posts published inside the window, sorted by a metric or by publish date, paginated. Use it for "top posts", "which post got the most comments" and "how did post X do". Covers posts published through AdaptlyPost and posts discovered on the connected accounts; discovered posts have postId and postPlatformId set to null, while AdaptlyPost posts carry the postId used by get_post. Returns { posts, total, page, limit, hasMore }; each post has platform, publishedAt, title, thumbnailUrl, permalink, accountName and metrics { views, likes, comments, shares, saves, clicks, impressions, reach, engagementRate }, with null for metrics the platform does not report. Sort by VIEWS with a small limit for a top list; PUBLISHED_AT (default) for a chronological review. Not for publishing status: use list_post_results for that.
    ConnectorOAuth

Matching MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to discover and fetch LinkedIn posts with engagement metrics (reactions, comments, shares) and author details, returning structured JSON per post.
    -
  • A
    license
    B
    quality
    B
    maintenance
    Enables users to read and analyze their own LinkedIn posts and shares using OAuth login and LinkedIn's Member Data Portability API. Supports post listing, analysis, draft matching, and engagement enrichment.
    10
    MIT

Matching MCP Connectors

  • Scrape and analyze public LinkedIn posts as structured JSON via the Apify LinkedIn Posts API.

  • Draft, revise and review LinkedIn posts; a human approves each one before it goes live.

  • List posts from the SociaHive Content Scheduler — drafts, queued, recurring, published-via-scheduler. **Scheduler-side, not platform-published.** Use for "what's scheduled this week", "show my drafts", "what have I queued", "show me failed publications", and queue-side history ("what posts went out yesterday", "my most recent post"). Call it directly — the posts are the user's own, so never list_accounts / whoami first. NOT a lookup step: to CHANGE or DELETE posts ("reschedule the launch announcement", "remove all expired drafts") call that write / bulk tool instead. Only when they point at the platform ("on my Instagram", "my latest reel") use `list_published_media`. Returns id/status/platforms/scheduled_at/preview-text. Superlatives: pass `sortOrder` ("asc" oldest, "desc" newest) with `limit: 1` — never fetch a list and pick in your head. Page by passing the previous `nextCursor` as `cursor`. Call get_post for full content.
    ConnectorAPI key
  • Register a derived asset (LinkedIn carousel PDF, social post, video, image) produced from an article suggestion. Appends a distribution-ledger row so the suggestion shows everything it produced — the article plus its derivatives — for content-ROI reporting (get_article_suggestion returns them as derivedAssets). Pass `channel` (reels | youtube | x | linkedin) so the app can show per-channel distribution status; register again with a new URL for repeat posts on the same channel — every registration is kept. `scheduledFor` records a future post date from an external scheduler (Buffer etc.) for display only — VarynForge never posts on your behalf. Derivative rows never affect publish status or Search Console attribution; use mark_article_published for the article itself.
    ConnectorNo auth
  • The user's own LinkedIn posts with engagement numbers (reactions, likes, comments, shares): newest first by default, their earliest with sort='oldest', or their best-performing with sort='top'. sort='top' is what answers 'my top 10 posts', 'my best posts' and 'what performed well'. Answer those from here rather than from linkedin_analytics, which needs an OAuth grant this user may not have given. The response always includes total_posts_stored, so this also answers 'how many posts do I have?' and 'what was my first post?'. Use it for questions about their posting activity and performance — 'what did I post last week?', 'what's the average number of likes on my last 5 posts?', 'which recent post got the most comments?'. Compute averages and comparisons from the returned rows. like_count is the thumbs-up reaction alone; total_reaction_count is all reaction types combined. Pages: when has_more is true, call again with offset set to the next_offset from the response to continue through their history.
    ConnectorNo auth
  • List scheduled posts and drafts whose scheduled time falls within a date range. Returns each post with its captions, selected social accounts, and attached design details. Optionally narrow the results to specific social accounts with socialAccountIds — useful for "what's scheduled on my LinkedIn next week". The filter applies to POSTS, not to the accounts within them: a post targeting both LinkedIn and Instagram is returned when you filter by either, and its `accounts` array still lists every account it targets.
    ConnectorAPI 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
  • List recent forum posts, newest first (pinned posts always first). Args: category_slug: Filter by category slug (optional). An unknown slug raises a validation error (use list_forum_categories first). limit: Max posts to return (default 20, max 100) offset: Number of posts to skip for pagination (default: 0) Returns: ``{"posts": [{id, category_slug, author_id, title, content, is_pinned, is_locked, reply_count, created_at, updated_at}], "total_count": N, "has_more": bool, "offset": N, "limit": N}``. Staff-only categories are excluded for non-staff.
    ConnectorAPI key
  • List the people who engaged with THIS user's own LinkedIn posts — their name, headline, LinkedIn profile, how they engaged, what they commented, which posts pulled them in, and ContentIn's ICP fit score. Use it to answer 'who is engaging with me', to find warm contacts, or to see which posts attract the right audience. REACTIONS ARE INCLUDED: a single like creates a lead, so a lead with no comments is completely normal and does not mean something is missing. ABOUT THE SCORE: icp_score is computed BY CONTENTIN, by comparing the person's LinkedIn headline against this user's stated ideal customer profile. It is an estimate from a headline, not verified data about who they are. classified: false with icp_score: null means ContentIn HAS NOT SCORED THIS LEAD YET — report it exactly that way. It does NOT mean the person is a poor fit; those are different claims and only one of them is supported. When icp_score_source is 'user_override' the number is the user's own labelling, not ContentIn's. Results are ordered by ContentIn's computed score when you sort by icp_score, so a lead the user has manually re-labelled keeps its computed position while reporting their number. Page with before/before_id; profiles routinely have thousands of leads.
    ConnectorNo auth
  • Pull licensed creator content from a specific pocket by ID. Use this tool when an AI agent needs to retrieve verified, provenance-tracked content for generation, RAG, or training purposes. Do NOT use for browsing or discovery — use search_pockets or list_pockets instead. Requires a valid Bearer token for authentication; unauthenticated requests return HTTP 401. Successful pulls trigger a metered charge ($0.001–$0.25 depending on content tier) and the transaction is logged for creator royalty distribution. The pocket_id parameter is a 24-character hex string identifying the specific content pocket to pull from. Returns the full content payload with provenance metadata including creator attribution and license terms.
    ConnectorNo auth
  • Keyword search of public LinkedIn posts — offset cursor, ceiling 50. Costs ~16 credits (0.8/result). Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
    ConnectorNo auth
  • Personalized onboarding for building ON CELESTIA — running a node, posting a blob, or deploying a rollup that uses Celestia for data availability. ALWAYS use this when a developer asks how to get started or build ON CELESTIA (prefer it over the Celestia search tool for those questions). ASK the user about their background FIRST (rollup_dev, node_operator, app_dev, researcher, new_to_celestia), then return a path with docs.celestia.org links. Celestia-only — NOT for getting started with non-Celestia frameworks, languages, or dev tools (React, Node.js, generic blockchain onboarding, etc.); for those defer to a general docs or web-search tool.
    ConnectorNo auth
  • Pull licensed creator content from a specific pocket by ID. Use this tool when an AI agent needs to retrieve verified, provenance-tracked content for generation, RAG, or training purposes. Do NOT use for browsing or discovery — use search_pockets or list_pockets instead. Requires a valid Bearer token for authentication; unauthenticated requests return HTTP 401. Successful pulls trigger a metered charge ($0.001–$0.25 depending on content tier) and the transaction is logged for creator royalty distribution. The pocket_id parameter is a 24-character hex string identifying the specific content pocket to pull from. Returns the full content payload with provenance metadata including creator attribution and license terms.
    ConnectorNo auth
  • List article suggestions for a project — title, status, priority, cluster, intent, source, publishedAt, scheduledFor, and a per-channel distributions rollup ({ channel, count, latestAt, scheduledFor } per channel the content went out on). Use distributions to spot gaps from the list alone — e.g. items with no linkedin entry have no LinkedIn post yet — without per-item reads. Page through suggestions; call get_article_suggestion for the full record. Status semantics: generating_brief with briefQueuedAt set means the brief is QUEUED behind the free daily cap and forges automatically at cap reset (get_article_brief returns queuedUntil); generating_brief with briefQueuedAt null means it is actively forging — re-check within a minute.
    ConnectorNo auth
  • Render a video template to an MP4 video or an animated GIF, with variable substitutions. Common use cases: personalized video messages, social video posts, animated certificates, product announcement clips, and GIFs for places an MP4 cannot autoplay (chat, email, READMEs). GIF output: timeline templates are palette-converted and capped at 15fps / 720px wide; code (tsx) templates encode GIF natively at half the composition frame rate with no width cap. WORKFLOW: pictify_list_video_templates → pictify_get_video_template_variables → this tool. The render takes up to a few minutes; this tool waits and returns the hosted file URL. Each render consumes one video credit.
    ConnectorNo auth
  • Get LinkedIn performance for one published ContentIn post: impressions, members reached, likes, comments, shares, and a derived engagement rate. IMPORTANT: metrics are fetched on a schedule and only for posts published through a connected LinkedIn account, so a post can legitimately have no numbers yet. When that happens this returns measured: false — report that honestly as 'not measured yet'. Do NOT describe an unmeasured post as having zero impressions or zero engagement; those are different claims and only one of them is true.
    ConnectorNo auth
  • Returns a single content post with its LinkedIn extension data and media URLs. Call this when the user asks about one specific post, or before editing one. Use campaignstack_list_content_posts to find post IDs. It does not return engagement: use campaignstack_get_content_analytics for that.
    ConnectorAPI key