list_tracked_links
list_tracked_links MCP tool: the links you bought or placed, with price, purchase date, campaign and how many times LLMs used each one as a source to cite your brand, plus spend and cost per cited link.
Updated 2026-09-24
list_tracked_links lists the links a project tracks in Link Tracking: guest posts, sponsored articles and other netlinking placements. Each row carries what the link cost, when it was bought, its campaign, and how many times an LLM used it as a source in an answer that cites the brand.
The summary object answers the money question in one call: total citations, and for each currency the amount spent, how many paid links got cited, the cost per cited link and the amount spent on links that were never cited.
When to use
Use it when the question is about the return of a netlinking budget: "which links I paid for never got me cited?", "what does a cited link cost me on the Q3 campaign?", "which site should I buy from again?".
A link with a url only counts citations of that exact page, so two articles bought on the same site stay apart. A link with url: null watches the whole domain and counts citations of any page on it. Citations come from the brand attributions of the existing scans: the tool costs no credits.
Input
| Field | Type | Default | Description |
|---|---|---|---|
projectId |
string (CUID) | required | Project to query. |
cursor |
string | Opaque pagination cursor from a prior pageInfo.nextCursor. |
|
limit |
integer | 20 | 1 to 100. |
filters.campaigns |
string[] | Exact campaign names. Links without a campaign are left out. | |
filters.cited |
boolean | true keeps links used at least once by an LLM, false keeps links never used. |
|
sortBy |
enum | citations_desc |
citations_desc, price_desc, purchased_desc, created_desc. |
Response
data holds one row per tracked link, pageInfo the usual pagination envelope, and summary the totals over every link matching the filters (not only the current page).
Prices are in cents with their currency. priceCents is null for a free or earned link, and those links are left out of summary.spend. EUR and USD are never converted: spend holds one entry per currency.
{
"data": [
{
"id": "cmufakcce000256it8dwo1sbp",
"url": "blog-x.fr/guide-seo-local",
"domain": "blog-x.fr",
"campaign": "Q3 netlinking",
"priceCents": 50000,
"currency": "EUR",
"purchasedAt": "2026-09-12T00:00:00.000Z",
"citations": 4,
"llms": ["CHATGPT", "PERPLEXITY"],
"promptCount": 3,
"firstSeenAt": "2026-09-15T08:12:40.000Z",
"lastSeenAt": "2026-09-23T08:05:11.000Z"
}
],
"pageInfo": { "hasMore": false, "nextCursor": null, "totalCount": 7 },
"summary": {
"citations": 9,
"spend": [
{
"currency": "EUR",
"spentCents": 124000,
"links": 6,
"cited": 4,
"wastedCents": 42000,
"costPerCitedCents": 31000
}
]
}
}
citations counts answers where an LLM used the link to cite the brand, promptCount the distinct prompts behind them. costPerCitedCents is the amount spent divided by the number of cited paid links, null until one is cited. wastedCents is the amount spent on paid links never cited.
Tips and patterns
- Read
summary.spendfirst:wastedCentsagainstspentCentstells you at a glance how much of the budget has not paid off yet. filters: { cited: false }withsortBy: "price_desc"lists the most expensive links still waiting for a citation.price_desccompares amounts as is, without converting currencies.- A freshly bought page can take a few scans to be indexed and cited. Check
purchasedAtbefore calling a link dead. - Group by
domainin your agent to see which sites deliver across several purchases, then look for new ones withlist_backlink_opportunities.
Related tools
list_backlink_opportunities: domains worth buying a link on, with marketplace priceslist_llm_sources: every domain the LLMs cite or search, beyond your own linkslist_prompts: the prompts behind the citations