LeadAdapter

Dokumentation

Tilslut en AI-agent

LeadAdapter er en MCP-server. Din agent får værktøjer i stedet for et chatvindue, og hvert eneste af dem går gennem det samme styringslag som dine automatiseringer.

Hvad det egentlig er

Model Context Protocol er standarden for at give en AI-assistent værktøjer. Peg en klient på vores endepunkt, log ind, og den kan vise dine automatiseringer, planlægge et opslag, læse dine leads eller sende en besked — inden for dine grænser, under din autonomiindstilling og i din revisionslog.

Endepunktet er https://www.leadadapter.com/mcp. Åbner du det i en browser, helt uden legitimation, får du kataloget og hvert værktøjs plan, så du kan se, hvad produktet kan, før du opretter dig.

Intet, en agent gør, går uden om reglerne. Der er intet agentbudget, ingen undtagelse fra kontakt-forbudt-listen for agenter, og ingen måde hvorpå en model kan hæve en grænse over det loft, din plan tillader.

Tilslut en klient

Claude og ChatGPT logger ind med OAuth: du indsætter endepunktet, de registrerer sig selv og sender dig til en LeadAdapter-login-side, hvor du vælger workspace og godkender. Cursor og alt, der kører i en terminal, bruger i stedet en API-nøgle.

Claude

Brugerdefineret connector · OAuth

  1. Åbn Indstillinger, derefter Connectors, derefter Tilføj brugerdefineret connector.
  2. Indsæt https://www.leadadapter.com/mcp som serverens URL.
  3. Claude registrerer sig selv og åbner en LeadAdapter-login-side i din browser.
  4. Log ind, vælg workspace og godkend. Værktøjerne er der i næste besked.

ChatGPT

Connector · OAuth

  1. Åbn Indstillinger, derefter Connectors, og tilføj en connector via URL.
  2. Indsæt https://www.leadadapter.com/mcp.
  3. Godkend den LeadAdapter-login, der åbner, og vælg det workspace, agenten skal handle i.
  4. Slå connectoren til i den samtale, du vil bruge den i.

Cursor

API-nøgle

  1. Opret en API-nøgle i LeadAdapter under Indstillinger, derefter API-nøgler. Den vises én gang.
  2. Tilføj serveren til din MCP-konfigurationsfil med nøglen som bearer-token — formen står nedenfor.
  3. Genindlæs vinduet. Cursor viser værktøjerne uden en tur forbi browseren.

Konfigurationsfil

Til en klient, der bruger en API-nøgle frem for et login i browseren:

{
  "mcpServers": {
    "leadadapter": {
      "url": "https://www.leadadapter.com/mcp",
      "headers": {
        "Authorization": "Bearer la_live_…"
      }
    }
  }
}

Serveren taler disse protokolversioner: 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26. Nøgler vises én gang, når de oprettes, og kan tilbagekaldes når som helst.

Værktøjskataloget

Det genereres fra serverens eget register, når siden hentes, så det er præcis det, din agent kommer til at se.

Værktøjer over din plan bliver stående og afviser, når de kaldes, med navnet på den plan, der indeholder dem. At skjule dem ville få en model til at fortælle dig, at produktet ikke kan noget, det kan — den eneste fejl, der er værre end en afvisning.

De 29 værktøjer, denne server har registreret lige nu.
Værktøj Hvad det gør Plan Kører
get_extension_status Whether the LeadAdapter Chrome extension is currently connected for each LinkedIn profile on this workspace, plus the depth of its job queue. NOTHING in LeadAdapter executes on LinkedIn while the extension is offline — check this before promising the user that anything has been sent. Kun læsning Starter På vores server
get_job Poll a queued extension job by its job_id. Returns queued, leased (a browser is running it now), done with the result, failed with the error, or cancelled. Extension work runs in the user's own Chrome, so a job stays queued for as long as that browser is closed. Kun læsning Starter På vores server
add_do_not_engage Suppress a person, an email address or a whole domain so nothing in LeadAdapter contacts them again. Use this the moment someone asks to be left alone. Suppression cannot be undone from here — that is deliberate. Pro På vores server
cancel_scheduled_post Call off a scheduled post so it never publishes, and cancel the browser jobs queued for it. DESTRUCTIVE: requires confirm: true, and there is no undo — the post cannot be un-cancelled, only scheduled again. A job already handed to the browser cannot be recalled, so the response says how many were actually stopped; do not tell the user it definitely did not go out unless that count covers it. A pre-attached automation is left alone as a draft. Refused with not_editable if the post already published. Spends no budget. Kræver confirm Pro På vores server
create_automation Create a comment-to-DM automation on a LinkedIn post that is ALREADY PUBLISHED: whoever comments with one of the keywords gets the direct message. Use schedule_post_with_automation instead when the post does not exist yet — an automation needs a post URN before it can be armed. Created as a draft; arm it with edit_automation status: "active" once the blockers listed in the response are clear. Spends no daily budget by itself; every DM it later sends spends one dm slot from the same shared budget as everything else. Refuses when the plan's automation limit is reached (tier_limit_reached) or when a regex keyword is unsafe (invalid_keyword_pattern). Pro På vores server
discover_lead_magnets Find posts in a niche that look like working lead magnets: high comment velocity plus "comment GUIDE below"-style copy. Runs a LinkedIn post search through the user's own browser (spends one of the daily search budget) and returns a heuristic 0-100 score per post with the signals behind it — this is a ranking to look at, not a classification. Results come back minutes later: either pass wait: true, or call again with the job_id from the first response to rank the finished search for free. Feed the winners to list_post_engagers to turn a magnet into a lead list. Pro I din browser
edit_automation Change an existing automation and/or its state. status: "active" arms it (refused, with reasons, if it is not ready), "paused" stops the polling but keeps queued DMs, "archived" ends it and cancels the DMs already queued for this morning's commenters — archived is destructive and requires confirm: true. Every other field is a plain edit and needs no confirmation. Only the fields you pass are changed; passing keywords replaces the whole keyword set. Spends no budget. Pro På vores server
edit_scheduled_post Change a post that has not gone out yet: its body, its images, its slot, or which automation it arms. Only the fields you pass change, but passing media REPLACES the whole image list. Refused with not_editable once publishing has started — at that point the text may already be inside the browser, so an edit that appeared to save would be a lie. Moving the slot into the past is refused; this is not a publish button. Spends no budget. Pro På vores server
enrich Look up a person's full LinkedIn profile through the user's own browser and merge it onto their lead record. Identify them with linkedin_urn, public_id, or lead_id for someone already captured. Spends one of the workspace's monthly enrichment allowance AND one profile_view against the daily LinkedIn cap; both remaining figures come back on every response, including refusals. Nothing is returned immediately — the browser fetches it minutes later, so poll get_job or re-read the lead. Refuses with enrichment_cap_reached (upgrade), cap_reached (wait until tomorrow), duplicate (we already enriched them within 30 days — read the stored record instead) or do_not_engage. include_email requires the Operator plan. Pro I din browser
enrich_company Look up a LinkedIn company page through the user's own browser and store its firmographics — industry, headcount, HQ, website, follower count. Takes a company URN (urn:li:organization:1234). Spends one of the workspace's monthly enrichment allowance AND one profile_view against the daily LinkedIn cap; both remaining figures come back on every response including refusals. The answer arrives minutes later via the browser, so poll get_job or re-read the company. Refuses with enrichment_cap_reached (upgrade), cap_reached (wait), or duplicate if we already enriched this account within 30 days — the response then names the record to read instead. Pro I din browser
export_leads Page through the leads captured by this workspace, newest first. Returns rows the model can read directly, with a next_cursor to continue. Filter by source, tag, or captured-since. Kun læsning Pro På vores server
get_automation Read one automation in full: the DM template, the follow-up, the public comment reply, the keyword sets, the counters, and activation_blockers — the list of what is stopping it going live. Call this before edit_automation so the edit is a change and not a guess. Read-only, no budget spent. Kun læsning Pro På vores server
get_page_leads List the people who submitted one lead page, newest first, with their email, the lead record they were matched to, the UTM/referrer they arrived on and whether they ticked marketing consent. consent_marketing=false means they agreed to receive the magnet and nothing else — do not add them to a sequence. Paged with next_cursor. Reads our own database; costs no LinkedIn budget. Kun læsning Pro På vores server
get_scheduled_post Read one scheduled post in full: body, media and their upload state, the attached automation, and the browser job that will publish it (or already tried). Use this to answer "why has my post not gone out" — the publish_job and error fields carry the reason, which is usually that the extension was offline at the slot. Read-only, no budget spent. Kun læsning Pro På vores server
list_automations List this workspace's comment-to-DM automations, newest first, with their status, keywords and counters. Start here before creating one: an automation on the post you are about to target may already exist, and two automations on the same post send two DMs to the same commenter. Read-only — no LinkedIn call, no budget spent. Use get_automation for the message templates. Kun læsning Pro På vores server
list_companies List the LinkedIn Company Pages this workspace knows about, including the ones the connected profile administers — the page URNs that company-voice tools and page scheduling need. Returns the stored records immediately (with firmographics if they have been enriched) and, unless you pass refresh: false, also queues a browser job to refresh the list, which spends one of the daily search budget. Nothing refreshes while the user's browser is closed. Pro I din browser
list_lead_pages List this workspace's lead-magnet pages with their public URLs, draft/published state and funnel numbers (views, unique views, submits, conversion rate, traffic sources) over a chosen window, 30 days by default. Use it to find the page id other lead-page tools need, or to decide which magnet to promote. conversion_rate is submits divided by total views. Reads our own database only; costs no LinkedIn budget. Kun læsning Pro På vores server
list_recent_posts Ask the user's browser extension for the LinkedIn posts they have published recently, so you can pick one to attach a comment-to-DM automation to. This is a browser job: it returns a job_id and nothing runs while that browser is closed — poll with get_job. The response also carries known_posts, the posts LeadAdapter already recorded, which you can act on immediately. Spends no daily budget. For someone ELSE's posts use list_person_posts, not this. Kun læsning Pro I din browser
list_scheduled_posts List this workspace's scheduled LinkedIn posts in slot order, soonest first. With no status filter it returns only posts that have not gone out yet. Each row says whether it is still editable, whether an automation is attached, and — for a post that is late or failed — why. Read-only, no budget spent. Use get_scheduled_post for the full body and media. Kun læsning Pro På vores server
manage_invitations Triage inbound LinkedIn connection requests: action=list queues a fetch of the pending invitations, action=accept or action=ignore decides one by invitation_urn. Everything runs in the user's own browser, so calls return a job_id and nothing happens while that browser is closed. Accepting or ignoring SPENDS ONE connect from the daily cap — LinkedIn meters invitation replies with outbound connects — so a large backlog takes several days and will be refused with cap_reached rather than queued past the cap. Rank the inviters yourself with enrich before deciding. Pro I din browser
manage_lead_magnet_links Create, list, edit or delete tracked short links (/l/{slug}) for lead magnets. Pass lead_page_id to point one at a hosted page, or target_url for anywhere else — non-http(s) targets are refused. Listing returns click counts, and with lead_id it also returns per-lead attributed URLs so a click can be traced back to the person who received the message. action=delete requires confirm: true and is permanent: links already sent start 404ing. Costs no LinkedIn budget. Pro På vores server
manage_lead_pages Create, edit, publish, unpublish or delete a hosted lead-magnet page. Pages are created as drafts; publish is a second call and is refused if the page promises a file it does not have. action=delete requires confirm: true (G12) and soft-deletes — captured leads, consent records and tracked links survive, and the URL stays reserved. Costs no LinkedIn budget; Starter is limited to a few pages, Pro and above unlimited. Pro På vores server
schedule_post_with_automation Write a LinkedIn post, put it in the calendar, and optionally pre-attach the comment-to-DM automation that will arm itself the moment the post publishes and its URN is known. This is the right tool when the post DOES NOT EXIST YET; use create_automation for a post that is already up. The slot must be in the future. Publishing happens through the user's browser at the slot and spends one post slot from the daily budget then, not now — if no browser is online it retries for two hours and then fails with a notification. Refuses on plans without scheduling (tier_required) and when the plan's automation limit is reached. Pro På vores server
set_daily_dm_limit Change the daily cap for one channel on a LinkedIn profile — by default direct messages. Lowering a cap always works. Raising one above the ceiling for this workspace's plan is refused with cap_ceiling_exceeded and the ceiling, so the answer is an upgrade and not a retry. Spends no LinkedIn budget itself; it edits the budget every other tool spends. Pro På vores server
suggest_automation_settings Given the TEXT of a LinkedIn post, propose the keyword, the negative keywords and the DM copy for a comment-to-DM automation, in the post's own language and using this product's placeholder spellings. Pass the result straight to create_automation. Saves nothing and sends nothing. Spends no LinkedIn budget — the server never reads the post, so paste the text in; there is no post_url form of this call. Returns llm_unavailable when the model gateway is down, in which case write the settings yourself. Kun læsning Pro På vores server
sync_lead_to_crm Push one captured lead into a connected integration (CRM, ESP). Names the provider or uses the workspace's only connected one. Re-syncing an existing contact is a success, not an error. Pro På vores server
decide_approval Approve or reject one held action. Requires confirm: true. Approving releases the action to be queued for the browser extension; it does not send anything by itself, and the send still passes through the daily caps. Kræver confirm Operator På vores server
list_actions Read this workspace's audit log: every tool call, automation action and approval decision, including the refusals. Filter by result (ok, queued, blocked, failed, approved, rejected), action type, tool, actor, target or date. Use result=blocked to find out why something did not send — the reason column carries the governance code. Reads only our own database; costs no LinkedIn budget and is safe to call repeatedly. Kun læsning Operator På vores server
list_approvals List the actions waiting for a human decision on this workspace. Under the default autonomy mode, outbound messages and connection requests are held here rather than sent — check this before telling the user something went out. Kun læsning Operator På vores server

Tabellen genereres fra serverens eget register, så det er præcis det katalog, din agent ser. Den samme liste ligger frit tilgængelig uden login på https://www.leadadapter.com/mcp. Værktøjsnavne og beskrivelser vises nøjagtigt, som serveren sender dem — på engelsk, fordi det er de strenge, modellen får.

Hvad hver plan kan kalde

Alle værktøjer vises på alle planer. Mærket afgør, om de svarer.

Pro

26 af 29 værktøjer

Værktøjerne til det, du selv ejer: dine opslag, dine kommentatorer, dine leadsider, dine automatiseringer.

Operator

29 af 29 værktøjer

Alt fra Pro, plus udgående aktivitet mod andres netværk og godkendelseskøen.

Agency

29 af 29 værktøjer

Operators funktioner solgt pr. plads, med kunderapportering og white label.

Svarkontrakten

Alle værktøjer svarer i samme form. Styringsblokken er den vigtige del: den fortæller, hvad der skete, hvorfor, og hvor meget af budgettet der er tilbage, så en agent kan planlægge frem for at gætte.

{
  "ok": true,
  "data": { },
  "governance": {
    "verdict": "queued",
    "reason": null,
    "remaining": { "dm": 137 }
  },
  "action_id": "01J…"
}

En afvisning har samme form. Det er et resultat og ikke en fejl, så modellen læser det og lægger en ny plan:

{
  "ok": false,
  "error": {
    "code": "cap_reached",
    "message": "…"
  },
  "governance": {
    "verdict": "blocked",
    "reason": "cap_reached",
    "remaining": { "dm": 0 }
  },
  "action_id": "01J…"
}

Alt, der rører LinkedIn, udføres af din browser, så svaret er et job at spørge til. Klienter, der kan holde et kald åbent, kan bede om at vente — serveren holder kaldet i op til 25 sekunder:

{
  "ok": true,
  "status": "queued",
  "job_id": "01J…",
  "eta_seconds": 45,
  "governance": { },
  "action_id": "01J…"
}

Hvad hvert svar betyder for en agent

En afvisning er et vellykket svar, der siger nej. Det kommer tilbage som et resultat, modellen læser, aldrig som en protokolfejl, modellen ikke kan se — en usynlig fejl bliver prøvet igen, og en gentaget LinkedIn-handling er præcis det, hele produktet findes for at undgå.

Den fulde liste over afvisningskoder, og hvad man gør ved hver, står på siden om styring.

De fire mulige svar på enhver handling.
Svar Hvad det betyder Sker det?
executed Udført i samme kald. Kun muligt for arbejde, der ikke rører LinkedIn. Ja
queued Modtaget og sendt videre til din browser. Det er det normale svar for alt på LinkedIn. Ja
approval_required Holdt tilbage, så et menneske kan tage stilling. Ikke en fejl — din autonomiindstilling bad om det. Ikke uden et skridt mere
blocked Afvist, med en maskinlæsbar årsag, så en agent kan lægge en ny plan i stedet for at prøve igen. Ikke uden et skridt mere

Prøvekørsler og bekræftelser

Alle handlingsværktøjer accepterer dry_run: true. De returnerer nøjagtigt det svar, det rigtige kald ville give — inklusive afvisningen og det resterende budget — og ændrer ingenting. Det er det rigtige første træk for en agent, der lige har fået en ny konto i hænderne.

Destruktive værktøjer afviser, medmindre de kaldes med confirm: true. At aflyse et planlagt opslag, arkivere en automatisering, slette en leadside og sætte en kanal på pause kræver alle det, så ingen enkelt selvsikker sætning fra en model kan lave om på arbejde, du ikke bad den røre.

Loadouts

Et loadout er en navngiven opgave: en systemprompt, en liste over værktøjer agenten må bruge til den, og fornuftige standarder. Det er indpakning frem for ny funktionalitet, og det er præcis derfor, det virker — det meste af forskellen på en nyttig og en farlig agent er afgrænsning.

Loadouts — en navngiven opgave, en liste over tilladte værktøjer og fornuftige standarder.
Loadout Hvad den gør Fase Plan
marketing.home.loadout.author.name marketing.home.loadout.author.body marketing.home.phases.create Pro
marketing.home.loadout.gatekeeper.name marketing.home.loadout.gatekeeper.body marketing.home.phases.capture Pro
marketing.home.loadout.scout.name marketing.home.loadout.scout.body marketing.home.phases.capture Operator
marketing.home.loadout.radar.name marketing.home.loadout.radar.body marketing.home.phases.capture Operator
marketing.home.loadout.matchmaker.name marketing.home.loadout.matchmaker.body marketing.home.phases.convert Operator
marketing.home.loadout.bridge.name marketing.home.loadout.bridge.body marketing.home.phases.convert Operator
marketing.home.loadout.shadow.name marketing.home.loadout.shadow.body marketing.home.phases.convert Operator
marketing.home.loadout.reviver.name marketing.home.loadout.reviver.body marketing.home.phases.convert Operator
marketing.home.loadout.medic.name marketing.home.loadout.medic.body marketing.home.phases.operate Pro

Grænser og versioner

Endepunktet accepterer op til 120 kald i minuttet pr. session. En klient kan bede et værktøj, der kører i din browser, om at vente på resultatet; serveren holder kaldet åbent i op til 25 sekunder og giver derefter et job-id at spørge til i stedet.

Understøttede protokolversioner: 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26. Serveren svarer med den version, din klient bad om, når den kan, og med den nyeste, den taler, når den ikke kan.

Hver grænse, hvert loft, hver timeout og hvert værktøjsnavn på denne side læses fra det kørende produkt, når siden hentes. Ændrer softwaren sig, ændrer siden sig med.