Docs· API & MCPMy API keys

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:

HTTP
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.

400Invalid request (missing or malformed parameter).invalid_request
401Missing, 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
402Plan limit reached (active deals, opportunities reserved for subscribers).plan_limit_reached
403Plan 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
404Project, 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
409Action 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
413Request body too large.payload_too_large
429More 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
500Something went wrong on our side. Try again, and contact us if it keeps happening.internal_error
Error response
{ "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

GET/api/v1/projects

The tracked sites your key can access. The ID is used by every other endpoint.

Request
curl https://netlinking.si/api/v1/projects \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "data": [
    {
      "id": "3f1c…-…",
      "domain": "mysite.com",
      "sector": "Windows and Linux VPS hosting",
      "createdAt": "2026-10-09T10:31:49.715Z"
    }
  ]
}

Backlink opportunities

GET/api/v1/projects/{id}/opportunities

Sites 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.

ParameterInTypeDescription
id *pathuuidProject ID
limitqueryinteger 1-200Number of results (default 50)
min_scorequerynumber 0-100Minimum score
include_excludedquerybooleanInclude excluded sites (competitors, platforms)
Request
curl "https://netlinking.si/api/v1/projects/3f1c…-…/opportunities?limit=2&min_score=40" \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

GET/api/v1/projects/{id}/prospects

Sites 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.

ParameterInTypeDescription
id *pathuuidProject ID
limitqueryinteger 1-200Number of results (default 50)
tierquerystringTier: priority, contact, secondary or hidden
statequerystringReview state: todo, accepted, rejected or snoozed
include_excludedquerybooleanInclude prospects excluded by prospecting
Request
curl "https://netlinking.si/api/v1/projects/3f1c…-…/prospects?tier=priority&state=todo" \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

GET/api/v1/projects/{id}/ai-visibility

An 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).

ParameterInTypeDescription
id *pathuuidProject ID
Request
curl https://netlinking.si/api/v1/projects/3f1c…-…/ai-visibility \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

GET/api/v1/projects/{id}/questions

The 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.

ParameterInTypeDescription
id *pathuuidProject ID
Request
curl https://netlinking.si/api/v1/projects/3f1c…-…/questions \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

GET/api/v1/projects/{id}/questions/{questionId}/answers

The 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).

ParameterInTypeDescription
id *pathuuidProject ID
questionId *pathuuidQuestion ID
Request
curl https://netlinking.si/api/v1/projects/3f1c…-…/questions/a7c2…/answers \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

GET/api/v1/projects/{id}/cited-pages

The 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).

ParameterInTypeDescription
id *pathuuidProject ID
domainquerystringOnly pages from this site (subdomains included)
limitqueryinteger 1-200Number of pages (default 50)
Request
curl "https://netlinking.si/api/v1/projects/3f1c…-…/cited-pages?limit=20" \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

GET/api/v1/projects/{id}/cited-page-analyses

The 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.

ParameterInTypeDescription
id *pathuuidProject ID
Request
curl https://netlinking.si/api/v1/projects/3f1c…-…/cited-page-analyses \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

GET/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).

ParameterInTypeDescription
id *pathuuidProject ID
analysisId *pathuuidAnalysis ID
Request
curl https://netlinking.si/api/v1/projects/3f1c…-…/cited-page-analyses/e19f… \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

GET/api/v1/projects/{id}/cases

Deals 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.

ParameterInTypeDescription
id *pathuuidProject ID
limitqueryinteger 1-500Number of deals (default 200)
list_idqueryuuidDeals from a single link tracker list (see /case-lists); omit for all lists
Request
curl https://netlinking.si/api/v1/projects/3f1c…-…/cases \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

POST/api/v1/projects/{id}/cases

Creates 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.

ParameterInTypeDescription
id *pathuuidProject ID
opportunityId *bodyuuidOpportunity or prospect ID
listIdbodyuuidLink tracker list for the deal (see /case-lists); omit for the project's default list
Request
curl -X POST https://netlinking.si/api/v1/projects/3f1c…-…/cases \
  -H "Authorization: Bearer $NETLINKING_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "opportunityId": "8a2e…" }'
Response 200
{ "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

GET/api/v1/projects/{id}/case-lists

The 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.

ParameterInTypeDescription
id *pathuuidProject ID
Request
curl https://netlinking.si/api/v1/projects/3f1c…-…/case-lists \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "data": [
    { "id": "5f0c…", "name": "Main tracker", "emoji": null, "isDefault": true, "archived": false, "openCases": 12, "acquiredCases": 4, "totalCases": 18 }
  ]
}

Change a deal's stage

PATCH/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.

ParameterInTypeDescription
id *pathuuidProject ID
caseId *pathuuidDeal ID
stage *bodystringtodo, in_progress, awaiting_publication, acquired or closed
Request
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" }'
Response 200
{ "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

GET/api/v1/credits

Your credit balance: remaining monthly credits (lost at renewal, on resetAt), purchased packs (never expire), monthly allowance and the price of each paid action.

Request
curl https://netlinking.si/api/v1/credits \
  -H "Authorization: Bearer $NETLINKING_KEY"
Response 200
{
  "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

Terminal
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):

claude_desktop_config.json
{
  "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

.cursor/mcp.json
{
  "mcpServers": {
    "netlinking": {
      "url": "https://netlinking.si/api/mcp",
      "headers": {
        "Authorization": "Bearer nls_your_key"
      }
    }
  }
}

Windsurf

mcp_config.json
{
  "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:

Terminal
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_projectsread

Lists the projects (tracked sites) the key can access, with their ID, domain and sector.

list_opportunitiesread

Sites 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_prospectsread

Sites 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_visibilityread

Overview 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_questionsread

Questions asked to the AI engines: ID, text, intent, active or paused, branded question.

Arguments: project_id

get_question_answersread

Latest 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_pagesread

Pages 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_analysesread

Cited page analyses already run: page format, page to create on your site, sites linking to it.

Arguments: project_id

get_cited_page_analysisread

Full 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_casesread

Link tracker deals, most recently updated first: site, stage, status and link page (500 at most).

Arguments: project_idlimitlist_id

list_case_listsread

Link tracker lists (campaign, client, topic…) with their deal counts; the default list receives deals added without a list.

Arguments: project_id

add_to_trackingwrite

Adds 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_casewrite

Moves 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_creditsread

Credit balance (monthly credits and purchased packs), renewal, monthly allowance and the price of each paid action.

ask_ai_engineswrite

Asks 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_assistantread

Asks 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.