API & MCP server
Bring your backlink opportunities, your visibility in AI answers and your link tracker into your own tools: through the REST API (scripts, spreadsheets, CRMs), or directly in Claude, ChatGPT, Cursor and any client that supports MCP (Model Context Protocol).
- • Included from the Pro plan at no extra cost. Reads never use credits.
- • The same data as the app: opportunities, prospects, AI visibility (questions, answers, cited pages and their analyses), the link tracker and credits.
- • Base URL:
https://netlinking.si/api/v1 - • JSON responses, always shaped as
{ "data": … }or{ "error": "…", "code": "…" }. Dates in ISO 8601 (UTC). - • Current version: v1. We only make backward-compatible additions to it (new fields, new endpoints); any breaking change will ship as v2.
Authentication
Create a key in Settings → Developer (organization owners and admins). It starts with nls_ and is shown only once. Send it in the Authorization header of every request:
Authorization: Bearer nls_your_key
- • Projects: a key can access the projects chosen when it was created, never more than its creator can see. It stops working if its creator leaves the team or is no longer an admin.
- • Access: “read-only” (view data) or “read and write” (add to the link tracker, move deals). With a read-only key, writes are rejected (403) and write tools don't show up in MCP.
- • Lifetime: 30 days, 90 days (default), 1 year or no expiration. An expired key is rejected (401): create a new one.
- • Revoke a key at any time and access is cut off immediately. Key creations, revocations and API writes are recorded in the organization's activity log.
Errors and limits
Every error returns a human-readable message (error) and a stable code (code). Check the code in your scripts: it never changes, while the message may be reworded.
| 400 | Invalid request (missing or malformed parameter).invalid_request |
| 401 | Missing, invalid, revoked or expired key, or a key whose creator left the team or is no longer an admin.missing_api_keyinvalid_api_keyexpired_api_keyrevoked_api_key |
| 402 | Plan limit reached (active deals, opportunities reserved for subscribers).plan_limit_reached |
| 403 | Plan without API access (Free and Starter), a write with a read-only key, or a read-only project (beyond your plan's project count).api_not_in_planread_only_keyread_only_projectforbidden |
| 404 | Project, question, analysis or deal not found: it doesn't exist, belongs to another organization or isn't among the key's projects.project_not_foundopportunity_not_foundlist_not_foundcase_not_foundquestion_not_foundanalysis_not_foundnot_found |
| 409 | Action blocked by the current state of the data, for example moving a site that asked not to be contacted back to “to do”.contact_opted_outconflict |
| 413 | Request body too large.payload_too_large |
| 429 | More than 120 requests per minute with the same key: wait the number of seconds given in the Retry-After header.rate_limitedtoo_many_auth_attempts |
| 500 | Something went wrong on our side. Try again, and contact us if it keeps happening.internal_error |
{ "error": "Invalid or revoked API key.", "code": "invalid_api_key" }Message language: English by default, like most public APIs, or French if the request prefers it (Accept-Language: fr). The code is the same in every language. Technical values (stages, statuses, intents) are never translated; your project content (questions, AI answers, page titles) stays in its own language; readable labels, such as the prices returned by /credits, follow the message language.
Rate limit: 120 requests per minute per key. Beyond that, the 429 response carries a Retry-After header (seconds to wait). On MCP, each message in a JSON-RPC batch counts, with at most 10 per batch.
List projects
/api/v1/projectsThe tracked sites your key can access. The ID is used by every other endpoint.
curl https://netlinking.si/api/v1/projects \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": [
{
"id": "3f1c…-…",
"domain": "mysite.com",
"sector": "Windows and Linux VPS hosting",
"createdAt": "2026-10-09T10:31:49.715Z"
}
]
}Backlink opportunities
/api/v1/projects/{id}/opportunitiesSites where you can earn a link, sorted by score, highest first (0 to 100). Competitors and platforms filtered out by our sorting are excluded by default, as are sites that no longer link to any of your competitors (lost: true, returned with include_excluded). affiliate: an affiliate site of a competitor (affiliate link detected or flagged manually), with the competitors involved in affiliateCompetitors.
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
| limit | query | integer 1-200 | Number of results (default 50) |
| min_score | query | number 0-100 | Minimum score |
| include_excluded | query | boolean | Include excluded sites (competitors, platforms) |
curl "https://netlinking.si/api/v1/projects/3f1c…-…/opportunities?limit=2&min_score=40" \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": [
{
"id": "8a2e…",
"domain": "hostadvice.com",
"score": 49.87,
"status": "new",
"siteType": "comparator",
"topic": "web host comparisons",
"authority": 512,
"spamScore": 3,
"linksToCompetitors": ["ovhcloud.com", "ionos.com", "alexhost.com"],
"citedByAi": { "questions": ["Best Windows VPS in the US?"], "engines": ["perplexity", "claude"] },
"excluded": false,
"affiliate": true,
"affiliateCompetitors": ["ovhcloud.com"],
"lost": false
}
]
}Prospects
/api/v1/projects/{id}/prospectsSites found by prospecting, excluding your competitors (guest posts, resource pages, “best X” lists, pages linking to your competitors…), sorted by score. Every page is read and assessed: page type, evidence quoted word for word, outreach angle.
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
| limit | query | integer 1-200 | Number of results (default 50) |
| tier | query | string | Tier: priority, contact, secondary or hidden |
| state | query | string | Review state: todo, accepted, rejected or snoozed |
| include_excluded | query | boolean | Include prospects excluded by prospecting |
curl "https://netlinking.si/api/v1/projects/3f1c…-…/prospects?tier=priority&state=todo" \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": [
{
"id": "51d0…",
"domain": "hostingjournal.com",
"score": 72,
"tier": "priority",
"state": "todo",
"inTracking": false,
"excluded": null,
"proven": true,
"siteType": "blog",
"authority": 214,
"spamScore": 4,
"trafficFr": 1830,
"linksToCompetitors": ["ikoula.com"],
"reasons": ["Accepts guest posts (proof on the page)", "Already links to a competitor"],
"pages": [
{
"url": "https://hostingjournal.com/write-for-us",
"title": "Write for us",
"category": "guest_posts",
"verdict": { "pageKind": "guidelines", "accepts": "yes", "paidOnly": false, "linkPolicy": "dofollow",
"proven": true, "evidence": "We publish articles from industry experts…", "lastDate": "2026-09", "pitch": "A guide to…" }
}
]
}
]
}AI visibility
/api/v1/projects/{id}/ai-visibilityAn overview of what ChatGPT, Gemini, AI Overview, AI Mode, Perplexity and Claude answer to your audience's questions: who gets cited, engine by engine, and your share of voice against competitors. Scanned every week. An engine with no AI answer for the search (no AI Overview, for example) returns answered: false (refused: true when the engine declined to answer); an answer more than 28 days old is flagged stale: true. null: the question was never asked to that engine. clientCited: answers where your site is a source; clientMentioned: answers that name it in the text as an option for the reader (recommended or in a list of options; a brand named only as an example or advised against doesn't count); clientVisible: either one. Share of voice: answers counts the answers where each brand is visible (cited or named), cited only those where it's a source, and share is its share (0 to 1).
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
curl https://netlinking.si/api/v1/projects/3f1c…-…/ai-visibility \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": {
"client": "mysite.com",
"answers": 40,
"clientCited": 7,
"clientMentioned": 9,
"clientVisible": 11,
"perEngine": [{ "engine": "chatgpt", "total": 8, "cited": 2, "visible": 3 }, …],
"shareOfVoice": [{ "domain": "ovhcloud.com", "answers": 19, "cited": 14, "share": 0.271, "isClient": false }, …],
"questions": [
{
"id": "a7c2…",
"question": "What's the best Windows VPS host in the US?",
"active": true,
"engines": {
"chatgpt": {
"answered": true,
"clientCited": false,
"citedDomains": ["ovhcloud.com", "ikoula.com"],
"citedPages": [{ "url": "https://www.ikoula.com/en/vps-windows", "title": "VPS Windows - Ikoula" }],
"askedAt": "2026-10-09T10:41:12.000Z",
"stale": false
},
"google_aio": { "answered": false, "askedAt": "2026-10-09T10:41:15.000Z" },
"google_ai_mode": null
}
}
]
}
}Tracked questions
/api/v1/projects/{id}/questionsThe questions asked to the AI engines for this project, with their intent (best_of, comparison, alternative, price, trust, how_to, brand). Use the ID to read the answers.
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
curl https://netlinking.si/api/v1/projects/3f1c…-…/questions \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": [
{
"id": "a7c2…",
"question": "What's the best Windows VPS host in the US?",
"active": true,
"brand": false,
"daily": false,
"intent": "best_of",
"createdAt": "2026-10-09T10:31:52.000Z"
}
]
}AI answers to a question
/api/v1/projects/{id}/questions/{questionId}/answersThe latest answer from each AI engine: text (6,000 characters at most, truncated: true beyond that), your site cited as a source or named in the text (rank among tracked brands, sentiment, exact sentence), competitors present, cited sources and pages. role: recommended (offered as a choice), listed (in a list of options), reference (named as an example or in a comparison: mentioned is false), warned (advised against: mentioned is false), null (not named, or not assessed yet).
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
| questionId * | path | uuid | Question ID |
curl https://netlinking.si/api/v1/projects/3f1c…-…/questions/a7c2…/answers \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": {
"id": "a7c2…",
"question": "What's the best Windows VPS host in the US?",
"client": "mysite.com",
"engines": {
"perplexity": {
"answered": true,
"askedAt": "2026-10-09T10:41:12.000Z",
"stale": false,
"model": "sonar",
"answer": "For a Windows VPS, OVHcloud and Ikoula…",
"truncated": false,
"client": { "cited": false, "mentioned": true, "role": "listed", "rank": 3, "sentiment": "neutral", "excerpt": "mysite.com also offers…" },
"competitors": [{ "domain": "ovhcloud.com", "cited": true, "mentioned": true, "role": "recommended", "rank": 1, "sentiment": "positive", "excerpt": "…" }],
"citedDomains": ["ovhcloud.com", "techradar.com"],
"citedPages": [{ "url": "https://www.techradar.com/best/best-vps-hosting", "title": "Best VPS hosting 2026", "domain": "techradar.com", "isClient": false, "isCompetitor": false }]
},
"claude": null
}
}
}Endpoint errors: 404 question_not_found: no such question in this project
Pages cited by AI
/api/v1/projects/{id}/cited-pagesThe pages AI engines cite as sources for your questions (latest answer from each engine, active questions), grouped by URL and sorted by number of citations. analysis: the existing analysis of the page, if any (see below).
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
| domain | query | string | Only pages from this site (subdomains included) |
| limit | query | integer 1-200 | Number of pages (default 50) |
curl "https://netlinking.si/api/v1/projects/3f1c…-…/cited-pages?limit=20" \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": [
{
"url": "https://www.techradar.com/best/best-vps-hosting",
"title": "Best VPS hosting 2026",
"domain": "techradar.com",
"citations": 4,
"questions": ["What's the best Windows VPS host in the US?"],
"engines": ["Perplexity", "ChatGPT"],
"isClient": false,
"isCompetitor": false,
"analysis": { "id": "e19f…", "status": "done" }
}
]
}Cited page analyses
/api/v1/projects/{id}/cited-page-analysesThe cited page analyses already run in the app (most recent first): page format, page to create on your site, number of sites linking to it. status: done, running or failed.
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
curl https://netlinking.si/api/v1/projects/3f1c…-…/cited-page-analyses \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": [
{
"id": "e19f…",
"url": "https://www.techradar.com/best/best-vps-hosting",
"title": "Best VPS hosting 2026",
"question": "What's the best Windows VPS host in the US?",
"status": "done",
"format": "listicle",
"pageToCreate": "The best Windows VPS hosts (2026 comparison)",
"linkingSites": 37,
"analyzedAt": "2026-10-09T14:02:10.000Z"
}
]
}Analysis report
/api/v1/projects/{id}/cited-page-analyses/{analysisId}The full report: how the page is built (outline, length, tables, FAQ), the diagnosis (why it gets cited, key elements, page to create with its outline, link building actions, actions for this week) and the sites linking to it (100 at most, spam networks removed).
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
| analysisId * | path | uuid | Analysis ID |
curl https://netlinking.si/api/v1/projects/3f1c…-…/cited-page-analyses/e19f… \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": {
"id": "e19f…",
"url": "https://www.techradar.com/best/best-vps-hosting",
"status": "done",
"page": { "title": "Best VPS hosting 2026", "wordCount": 3120, "headings": [{ "level": 2, "title": "Our ranking" }, …], "tables": 2, "hasFaq": true, … },
"diagnosis": {
"whyCited": ["Pricing comparison table updated for 2026", …],
"format": { "type": "listicle", "summary": "Rated ranking with a pricing grid" },
"pageToCreate": { "title": "…", "slug": "…", "outline": [{ "h2": "…", "points": ["…"] }], … },
"linkStrategy": ["…"],
"quickWins": ["…"]
},
"linkingSites": {
"total": 37, "available": 37, "capped": false,
"items": [{ "domain": "zdnet.com", "urlFrom": "https://…", "anchor": "best VPS", "dofollow": true, "authority": 640, "dr": 78, "linksClient": false, "competitor": false }]
}
}
}Endpoint errors: 404 analysis_not_found: no such analysis in this project
Link tracker
/api/v1/projects/{id}/casesDeals in the link tracker, most recently updated first: one per site you're after, with its stage and the link's page once it's live.
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
| limit | query | integer 1-500 | Number of deals (default 200) |
| list_id | query | uuid | Deals from a single link tracker list (see /case-lists); omit for all lists |
curl https://netlinking.si/api/v1/projects/3f1c…-…/cases \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": [
{
"id": "c41b…",
"domain": "lemp.io",
"stage": "in_progress",
"status": "contacted",
"method": "outreach",
"pageUrl": null,
"list": { "id": "5f0c…", "name": "Main tracker" },
"createdAt": "2026-10-09T12:15:03.000Z",
"updatedAt": "2026-10-09T12:20:41.000Z"
}
]
}Add to the link tracker
/api/v1/projects/{id}/casesCreates a deal in the “To do” column for an opportunity or a prospect. Does nothing if the site is already tracked (already: true). Requires a read and write key.
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
| opportunityId * | body | uuid | Opportunity or prospect ID |
| listId | body | uuid | Link tracker list for the deal (see /case-lists); omit for the project's default list |
curl -X POST https://netlinking.si/api/v1/projects/3f1c…-…/cases \
-H "Authorization: Bearer $NETLINKING_KEY" \
-H "Content-Type: application/json" \
-d '{ "opportunityId": "8a2e…" }'{ "data": { "domain": "hostadvice.com", "already": false, "list": "Main tracker" } }Endpoint errors: 402 plan_limit_reached: your plan's active deal limit is reached · 403 read_only_key, read_only_project: read-only key, or read-only project (beyond your plan's projects) · 404 opportunity_not_found, list_not_found: opportunity not found, or list not found or archived
Link tracker lists
/api/v1/projects/{id}/case-listsThe link tracker's lists (separate boards for a campaign, a client, a topic…), default list first. The default list receives deals added without a listId and existing links detected automatically.
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
curl https://netlinking.si/api/v1/projects/3f1c…-…/case-lists \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": [
{ "id": "5f0c…", "name": "Main tracker", "emoji": null, "isDefault": true, "archived": false, "openCases": 12, "acquiredCases": 4, "totalCases": 18 }
]
}Change a deal's stage
/api/v1/projects/{id}/cases/{caseId}Moves a deal in the link tracker, just like on the board: the status takes the new stage's default value, the change is recorded in the deal's history and the deal moves to the top of its column. In todo, awaiting_publication, acquired or closed, the deal's scheduled follow-ups are cancelled (cancelledFollowups). A site that asked not to be contacted can't go back to todo or in_progress. Requires a read and write key.
| Parameter | In | Type | Description |
|---|---|---|---|
| id * | path | uuid | Project ID |
| caseId * | path | uuid | Deal ID |
| stage * | body | string | todo, in_progress, awaiting_publication, acquired or closed |
curl -X PATCH https://netlinking.si/api/v1/projects/3f1c…-…/cases/c41b… \
-H "Authorization: Bearer $NETLINKING_KEY" \
-H "Content-Type: application/json" \
-d '{ "stage": "awaiting_publication" }'{ "data": { "id": "c41b…", "stage": "awaiting_publication", "status": "accepted", "cancelledFollowups": 1 } }Endpoint errors: 400 invalid_request: unknown stage · 402 plan_limit_reached: reopening this deal would exceed your plan's active deal limit · 403 read_only_key, read_only_project: read-only key, or read-only project · 404 case_not_found: deal not found (invalid ID or from another project) · 409 contact_opted_out: the site is on the “Do not contact” list (moving back to todo or in_progress is refused)
Credits
/api/v1/creditsYour credit balance: remaining monthly credits (lost at renewal, on resetAt), purchased packs (never expire), monthly allowance and the price of each paid action.
curl https://netlinking.si/api/v1/credits \ -H "Authorization: Bearer $NETLINKING_KEY"
{
"data": {
"balance": 2491,
"allowanceBalance": 1991,
"packBalance": 500,
"monthlyAllowance": 2000,
"resetAt": "2026-11-09T10:00:00.000Z",
"trialing": false,
"plan": "pro",
"prices": { "mail_draft": { "credits": 7, "label": "Email and follow-up drafted by Claude" }, … }
}
}MCP server
The MCP server gives your AI assistant the same data as the API, as tools it calls on its own. Ask it in plain language: “what are my 10 best opportunities?” or “which questions does ChatGPT cite my competitors for, but not me?”.
- • URL:
https://netlinking.si/api/mcp - • Transport: Streamable HTTP, stateless (no session, no SSE stream). Protocol versions: 2025-06-18, 2025-03-26, 2024-11-05.
- • JSON-RPC batches: 10 messages at most, each counted toward the 120 requests per minute limit.
- • Authentication: the same API key, in the
Authorization: Bearer nls_…header - • Language: tool descriptions are in English for everyone (your assistant reads them, then answers you in your own language); error messages and readable text in results follow the key creator's language (Settings → General), unless the request sends an explicit
Accept-Language. - •
ask_assistant: the app's built-in assistant answers from your MCP client, using the key creator's question quota and credits.
Connect a client
Claude Code
claude mcp add --transport http netlinking https://netlinking.si/api/mcp \ --header "Authorization: Bearer nls_your_key"
Claude Desktop
In Settings → Developer → Edit Config (the claude_desktop_config.json file), through the mcp-remote bridge (requires Node.js):
{
"mcpServers": {
"netlinking": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://netlinking.si/api/mcp",
"--header",
"Authorization:${NETLINKING_AUTH}"
],
"env": {
"NETLINKING_AUTH": "Bearer nls_your_key"
}
}
}
}Restart Claude Desktop: the netlinking tools show up in the tools menu.
Cursor
{
"mcpServers": {
"netlinking": {
"url": "https://netlinking.si/api/mcp",
"headers": {
"Authorization": "Bearer nls_your_key"
}
}
}
}Windsurf
{
"mcpServers": {
"netlinking": {
"serverUrl": "https://netlinking.si/api/mcp",
"headers": {
"Authorization": "Bearer nls_your_key"
}
}
}
}Other clients
Any MCP client that accepts an HTTP URL and an authorization header. To test by hand:
curl https://netlinking.si/api/mcp \
-H "Authorization: Bearer nls_your_key" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'MCP tools
list_projectsreadLists the projects (tracked sites) the key can access, with their ID, domain and sector.
list_opportunitiesreadSites where you can earn a link, sorted by score: site type, authority, competitors they already link to, AI citations (200 at most).
Arguments: project_idlimitmin_scoreinclude_excluded
list_prospectsreadSites found by prospecting, sorted by score: page read, quoted evidence, outreach angle, tier and review state (200 at most).
Arguments: project_idlimittierstateinclude_excluded
get_ai_visibilityreadOverview of the answers from ChatGPT, Gemini, AI Overview, AI Mode, Perplexity and Claude: your site cited or named, per engine, and share of voice.
Arguments: project_id
list_questionsreadQuestions asked to the AI engines: ID, text, intent, active or paused, branded question.
Arguments: project_id
get_question_answersreadLatest answer from each AI engine to a question: text, your presence (cited, named, rank, sentiment), competitors, cited sources and pages.
Arguments: project_idquestion_id
list_cited_pagesreadPages cited as sources by AI engines, grouped by URL: questions, engines, your page or a competitor's, existing analysis.
Arguments: project_iddomainlimit
list_cited_page_analysesreadCited page analyses already run: page format, page to create on your site, sites linking to it.
Arguments: project_id
get_cited_page_analysisreadFull analysis report: why the page gets cited, outline of the page to create, link building actions, sites linking to it.
Arguments: project_idanalysis_id
list_casesreadLink tracker deals, most recently updated first: site, stage, status and link page (500 at most).
Arguments: project_idlimitlist_id
list_case_listsreadLink tracker lists (campaign, client, topic…) with their deal counts; the default list receives deals added without a list.
Arguments: project_id
add_to_trackingwriteAdds an opportunity or a prospect to the link tracker (“To do” column), in the chosen list or the default one.
Arguments: project_idopportunity_idlist_id
move_casewriteMoves a deal to todo, in_progress, awaiting_publication, acquired or closed (status and history updated as on the board, scheduled follow-ups cancelled when needed).
Arguments: project_idcase_idstage
get_creditsreadCredit balance (monthly credits and purchased packs), renewal, monthly allowance and the price of each paid action.
ask_ai_engineswriteAsks a question right now to the 6 AI engines (or the ones you pick), without tracking it: verdict per engine, rank, visible competitors, sources read, summary. Credits per engine (engines that don't answer are refunded; an answer under 24 h old is reused for free); one question is included on the Free plan. Waits 90 s at most, otherwise returns ask_id so you can read the rest without paying again.
Arguments: project_idquestionmarketenginesforceask_id
ask_assistantreadAsks the built-in assistant (the same one as in the app): it reads the project data and answers in your account's language, as text, without taking actions. Counts toward the key creator's monthly questions, then credits (an in-depth question gets a deep answer: 5 questions or 45 credits). Also returns the conversation ID so you can follow up.
Arguments: questionproject_idconversation_id
Example prompts
- “What are my 10 best backlink opportunities for mysite.com, and why?”
- “Which questions do ChatGPT and Perplexity cite my competitors for, but not me? Which sources do they read?”
- “What exactly does Perplexity answer to “best Windows VPS”? How am I presented?”
- “Which pages do AI engines cite most for my questions, and which ones have I already analyzed?”
- “Show me the priority prospects I still need to review, with proof that they accept guest posts.”
- “Add the 5 highest-rated media sites that link to at least two of my competitors to the link tracker.”
- “Give me a status update on my link tracker: how many deals are awaiting publication, and which ones need a follow-up?”
- “How many credits do I have left, and how much does drafting an email cost?”
Best practices
- • One key per tool (Claude Desktop, script, integration), so you know which one to revoke.
- • A read-only key for anything that only reads data (dashboards, assistants), with a limited lifetime.
- • Never commit a key to a code repository: use an environment variable (
NETLINKING_KEY). - • Write tools (adding to the link tracker, changing a stage) act on your real data: your MCP client usually asks you to confirm.
- • Questions? Message us from the app.