GenuineLink
OpenAPI

MCP server

GenuineLink hosts a remote Model Context Protocol (MCP) server so Cursor, Claude, and other MCP clients can call your GenuineLink data with tools — using the same public API keys as the REST API. No local process to run.

Connection URL

https://developer.genuinelink.ai/mcp

Transport: Streamable HTTP (JSON-RPC). Authenticate every request with your API key in headers — the same keys you create under Account or Agency settings.

Authentication

  • Authorization: Bearer glc_… for a company key.
  • Authorization: Bearer gla_… for an agency key.
  • Agency keys acting on a client company also need X-Company-Id with that company's opaque public ID (from list_agency_companies or the REST endpoint).

Prefer environment-variable interpolation in client config so keys are not committed to git. Never share raw keys in chat logs.

Cursor

Add a remote Streamable HTTP server in ~/.cursor/mcp.json (or project .cursor/mcp.json). Use type: "http" (not streamable-http — that alias breaks some Cursor CLI parsers):

{
  "mcpServers": {
    "genuinelink": {
      "type": "http",
      "url": "https://developer.genuinelink.ai/mcp",
      "headers": {
        "Authorization": "Bearer glc_YOUR_KEY_HERE"
      }
    }
  }
}

Agency key scoped to a company:

{
  "mcpServers": {
    "genuinelink": {
      "type": "http",
      "url": "https://developer.genuinelink.ai/mcp",
      "headers": {
        "Authorization": "Bearer gla_YOUR_KEY_HERE",
        "X-Company-Id": "YOUR_OPAQUE_COMPANY_ID"
      }
    }
  }
}

Prefer "Authorization": "Bearer ${env:GENUINELINK_API_KEY}" after exporting the key in your shell environment. Use strict JSON (no trailing commas). After saving, reload MCP from Cursor Settings → MCP, or restart Cursor.

If the server shows as errored, open Output → MCP Logs. A valid config POSTs initialize then tools/list with your Bearer header — tools stay unavailable only when auth fails or mcp.json is invalid.

Claude Desktop / remote MCP

Clients that support remote HTTP MCP use the same URL and Bearer header. Example shape:

{
  "mcpServers": {
    "genuinelink": {
      "type": "http",
      "url": "https://developer.genuinelink.ai/mcp",
      "headers": {
        "Authorization": "Bearer glc_YOUR_KEY_HERE"
      }
    }
  }
}

Available tools

A curated subset of the public API — list/read operations plus safe, high-value mutations. All IDs in tool input/output are opaque public IDs (not database IDs).

Auth & agency

  • check_api_keyValidate the configured GenuineLink API key and return its scope (COMPANY or AGENCY), key name, and resolved company/agency IDs.
  • list_agency_companiesList client companies under the authenticated agency.

Campaigns

  • list_campaignsList outreach campaigns for the company, newest first.
  • get_campaignFetch a single campaign by opaque campaign ID (settings snapshot, status, linked accounts/list refs).
  • get_campaign_sequenceReturn the campaign sequence graph (nodes and edges) for inspection or explanation.
  • get_campaign_leadsPage through leads enrolled in a campaign's list.
  • start_campaignStart a draft/initialize campaign (moves it to ACTIVE).
  • pause_campaignPause an ACTIVE campaign.
  • resume_campaignResume a PAUSED campaign back to ACTIVE.
  • add_campaign_leadsAdd one or more leads (by LinkedIn URL) into a campaign.

Lists & leads

  • list_listsList lead lists (uploads) for the company.
  • get_listGet metadata for one lead list (name, total leads, status).
  • get_list_leadsPage through leads inside a list.
  • create_listCreate an empty named lead list.
  • add_list_leadsAdd leads (by LinkedIn URL) to an existing list.
  • get_leadFetch one lead by opaque lead ID (profile fields, list membership, tags).
  • get_lead_tagsList tags currently assigned to a lead.
  • add_lead_tagsAdd tag names to a lead (creates tags if missing).

Inbox & accounts

  • list_conversationsList LinkedIn inbox conversations for a company LinkedIn account (newest activity first).
  • get_conversationFetch one conversation plus recent messages (chronological).
  • send_messageSend a text message in an existing LinkedIn conversation.
  • set_conversation_seenMark a conversation as seen (read) or unseen (unread).
  • list_linkedin_accountsList LinkedIn accounts connected to the company (opaque IDs, status, profile summary).
  • get_linkedin_accountGet one LinkedIn account by opaque ID.

Stats & webhooks

  • get_overall_statsReturn high-level company totals: campaigns, active campaigns, lists, leads, LinkedIn accounts, and acceptance rate.
  • list_webhooksList outbound webhook subscriptions for the company (events, URL, enabled).
  • create_webhookCreate an outbound webhook subscription (HTTPS URL + event list).
  • get_webhookGet one webhook subscription by opaque webhook ID.

Tips

  • Call check_api_key first if auth looks wrong.
  • Prefer list_* tools to discover IDs before get_* or mutations.
  • send_message reaches a real LinkedIn conversation — confirm intent before calling.
  • Full REST coverage remains at https://app.genuinelink.ai/api/v1.
    GenuineLink Developer | GenuineLink