Documentation
Guides
Five short walkthroughs using the exact labels you will see in the console.
01Connect your LinkedIn account
Sending needs one connected account. The browser extension is the normal path; a manual form exists for locked-down laptops.
- Install the Slicegraph extension in the Chrome profile where you are signed in to LinkedIn. Chrome's install permission is the consent step; there is no pairing code.
- Open LinkedIn accounts in the console. The page detects the extension, hands it a revocable token, and the extension connects the account in one click. It reads the session cookie and your browser's user agent once and sends them over an encrypted connection; the cookie is not stored.
- If LinkedIn asks for verification, the page shows it inline: a code, an approval in the LinkedIn app, or a phone number. You have five minutes. A puzzle check opens a secure connection window instead.
- Prefer the manual form on a laptop where extensions are blocked: paste the li_at cookie from the same browser, optionally the li_a cookie for Sales Navigator, and confirm you own the account. Copy it from the same browser or the session dies within days.
- Once connected, the account starts on the Balanced preset with warmup on. Open Safety and cadence to change the preset, the sending days and hours, or how long an unanswered invite waits before it is withdrawn.
02Build an audience
An audience is a LinkedIn search that keeps producing. Build it in the app or paste a URL.
- Open Find leads. Pick the sender; the search runs on that account's own LinkedIn, so results match what that person would see.
- Fill in job title and keywords as free text, and resolve location, industry, company and job function through the typeahead. Company size and seniority are not offered here because LinkedIn has no lookup for them; for those, build the search on LinkedIn and paste its URL on the campaign's Sources tab instead.
- Press Preview. The worker pages the search on its next passes, up to 250 rows, and each row gets a verdict: new, already in a campaign, recently contacted, or blocklisted. Nobody is contacted by a preview.
- Untick anyone you do not want, choose the campaign, and press Import. Blocklisted rows never import.
- The search stays attached as a source. When it drains it rests seven days and pages from the top again, because a saved search is a standing query and new matches appear at the head.
03Design a sequence
A campaign runs one workflow, drawn as a spine of steps. New campaigns start from a template.
- Press New campaign, name it, pick the sender and a template. The sender cannot change afterwards; the leads are read through that session.
- On the Sequence tab, the plus between two steps opens the step picker: view profile, message, condition, wait, end, plus InMail when the sender has a seat and withdraw invite after an invite.
- Click a step to edit it in place. Use {{firstName|there}} style fallbacks so a missing value never leaves a hole. The panel below the spine lists anything that would block activation.
- Replace every bracketed [placeholder] a template ships with. They are an error until you do, so a prospect can never receive literal brackets.
- Add at least one active source on the Sources tab, then press Activate. If something is missing the button says what. While the campaign runs you can still edit copy, but adding or removing steps needs a pause first.
04Sending limits and safety
The caps are enforced by the worker, not suggested by the UI. Here is what each control does.
- Preset: Conservative, Balanced or Faster set the daily and weekly caps and the gap between actions. Custom exposes every number.
- Warmup: a new account sends five invites a day and adds five each weekday until it reaches its cap. Restart warmup after a long pause.
- Window: sending happens on the chosen days between the chosen hours, and the exact start and end shift within a half-hour range every day.
- Withdraw unanswered invites after: 21 days by default, a few per pass. Set it to 0 to switch the sweep off.
- Cooldowns: a rate limit pauses the sender for two hours, or 24 when LinkedIn asks it to slow down. Pause sending on the account or pause the campaign to stop everything within minutes.
05Run campaigns from an agent
The MCP lets an agent do everything up to the Activate click.
- Create a Campaign MCP key on the API keys page and put it in an environment variable. Add the server to your client as shown above.
- Call list_senders to find the connected account, then create_campaign with a name, the sender id and an idempotency key.
- Set the workflow with apply_workflow_template, or set_campaign_workflow for a custom spine. Fix any issue get_campaign reports.
- Resolve filter ids with search_filter_options, then start_audience_preview from those filters or a pasted LinkedIn URL. Poll get_audience_preview until it is ready and import_audience_preview the rows you want.
- Check get_campaign reports ready, then ask a person to press Activate in the console. The MCP can pause a running campaign, but never start one.
Outreach MCP
Slicegraph exposes a stateless Streamable HTTP MCP endpoint so an agent can set up campaigns. Create a Campaign MCP key on the API keys page in the console; the plaintext is shown once. Keys carry the outreach:read, outreach:draft:write and outreach:pause scopes and cannot activate, resume or archive a campaign, and cannot change a sender's safety settings.
Endpoint: https://slicegraph.com/api/mcp
Campaign, source, preview and import tools take an idempotency key. Retrying with the same key returns the original result.
| Tool | What it does |
|---|---|
list_senders | Connected LinkedIn senders with today's sampled limits, warmup and cooldown state. |
list_campaigns | Campaigns with lead and source counts. |
get_campaign | Settings, sender, sources, workflow, validation issues and readiness of one campaign. |
list_campaign_setup_options | Workflow templates and Slicegraph feeds available for setup. |
search_filter_options | Typeahead for location, industry, company, school and job function ids. Views no profile. |
create_campaign | Create a draft. Never activates. |
update_campaign | Rename a draft, change its sender or recontact window. |
set_campaign_cadence | Use the sender's policy or slow this campaign down. Custom values can only lower caps. |
apply_workflow_template | Replace a draft's workflow with a built-in or saved template. |
set_campaign_workflow | Replace a draft's workflow with semantic node references. |
add_campaign_source | Attach profile URLs, a LinkedIn or Sales Navigator URL, a Slicegraph feed or a structured audience. |
start_audience_preview | Stage a people search from filters or a pasted URL. Up to 250 rows, contacts nobody. |
list_audience_previews | Recent previews with status and row counts. |
get_audience_preview | Rows of a preview with their dedupe verdicts. |
import_audience_preview | Add preview rows to a draft or paused campaign as queued leads. |
set_campaign_source_active | Enable or disable a source on a draft. |
detach_campaign_source | Detach a source that has no leads in progress. |
pause_campaign | Emergency stop for an active campaign. |
Connecting a client
Claude Code: add the server to .mcp.json with the key in an environment variable.
{
"mcpServers": {
"slicegraph": {
"type": "http",
"url": "https://slicegraph.com/api/mcp",
"headers": { "Authorization": "Bearer ${SLICEGRAPH_MCP_TOKEN}" }
}
}
}Codex: add the server to config.toml.
[mcp_servers.slicegraph]
url = "https://slicegraph.com/api/mcp"
bearer_token_env_var = "SLICEGRAPH_MCP_TOKEN"Any other client: a Streamable HTTP transport with the bearer header.
Authorization: Bearer sg_live_...Signals API
Slicegraph delivers EU company signals (permits, tenders, Peppol e-invoicing registrations, insolvencies) as a REST API, webhooks and CSV. Base URL: https://slicegraph.com/api/v1
Authentication
Every request needs your API key as a Bearer token. Keys are issued when you subscribe: see pricing.
curl https://slicegraph.com/api/v1/signals \
-H "Authorization: Bearer sg_live_..."GET /signals
Query the signal stream, newest first. All filters combine.
familypermit · procurement · einvoicing · distresstypepermit_applied · permit_granted · tender_published · tender_awarded · peppol_registered · insolvency_declared · suspension_of_paymentsregionlowercase region slug, e.g. amsterdam, rotterdam, nl, bekvkexact KvK number of the resolved companysinceISO 8601 date; only signals that occurred on/after itlimit1–200, default 50cursoropaque pagination cursor from next_cursor
curl "https://slicegraph.com/api/v1/signals?family=einvoicing®ion=nl&limit=100" \
-H "Authorization: Bearer sg_live_..."
{
"data": [
{
"id": "5a3f...",
"family": "einvoicing",
"type": "peppol_registered",
"title": "Voorbeeld B.V. geregistreerd op het Peppol-netwerk",
"region": "nl",
"occurred_at": "2026-08-14T00:00:00.000Z",
"url": "https://directory.peppol.eu/participant/...",
"company_id": "42bd...",
"company_name": "Voorbeeld B.V.",
"kvk_number": "12345678",
"payload": { "participantId": "0106:12345678", "docTypeCount": 6 }
}
],
"next_cursor": "MjAyNi0wOC0xNF..."
}GET /companies/:id
A resolved company with its full signal history (latest 50 events).
Webhooks
Register a subscription and Slicegraph pushes each new matching signal to your endpoint as it is ingested (daily batches). The filter accepts the same values as /signals.
curl -X POST https://slicegraph.com/api/v1/subscriptions \
-H "Authorization: Bearer sg_live_..." \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://your-app.com/hooks/slicegraph",
"filter": { "families": ["einvoicing"], "regions": ["nl"] }
}'Each delivery is a POST with one signal (same shape as /signals data items) and an X-Slicegraph-Signature header: hex HMAC-SHA256 of the raw body, keyed with the subscription secret returned on creation. Non-2xx responses are retried with backoff.
Using with Clay
- Add an “HTTP API” enrichment column to your Clay table.
- Method GET, endpoint
https://slicegraph.com/api/v1/signals?kvk={{KvK column}} - Add header
Authorization: Bearer sg_live_... - Map
data[0].typeanddata[0].occurred_atinto columns and trigger your sequences on fresh signals.
Alternatively, point a webhook subscription at a Clay webhook source to stream new signals into a Clay table directly.
HubSpot / Pipedrive
Use a webhook subscription with Zapier/Make/n8n (one step: webhook → create or update a record), or pull /signals on a schedule. Native push integrations are on the roadmap.
CSV
Concierge plans receive curated CSV exports: the same data, filtered and deduplicated per your ICP, delivered to your inbox. Get in touch.