Search, compare, order and track French backlink placements through the Nautilinks catalog.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer token: 'Bearer sn_live_<your Nautilinks API key>'. Create the key in the Nautilinks member area under Mon compte -> Cles API (https://nautilinks.co/fr/inscription/). No OAuth in V1.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user asks what Nautilinks does, how its backlink buying service works, or how an AI agent can use it. Explains the French owned backlink network sold direct, with no reseller, how a purchase flows (prepaid balance or human Stripe checkout -> article drafted & published), the three price shelves (Plancton 5 EUR, Corail 15 EUR, Nautilus 30 EUR), and how authentication works. Call this first if you're not sure what this service does.
This tool takes no arguments.
Use this when the user asks what Nautilinks does, how its backlink buying service works, or how an AI agent can use it. Explains the French owned backlink network sold direct, with no reseller, how a purchase flows (prepaid balance or human Stripe checkout -> article drafted & published), the three price shelves (Plancton 5 EUR, Corail 15 EUR, Nautilus 30 EUR), and how authentication works. Call this first if you're not sure what this service does.
No arguments.
{
"type": "object",
"properties": {}
}Use this before create_order to return the prepaid balance available to this API key. create_order applies this balance after discounts: full coverage settles immediately, partial coverage reduces the human-approved Stripe remainder. Requires a Nautilinks API key.
No arguments.
{
"type": "object",
"properties": {}
}Use this only when the user has selected placements and wants to place a backlink order. This can spend the account's prepaid balance immediately. Place an order for 1 to 20 backlinks across catalog sites. Each item can request a new dedicated article or an existing-article insertion, 0/1/3/5 tier-2 links, and an optional project tag, alongside target URL, anchor and brief. Use list_site_articles first to obtain article_id for an insertion. The better of the optional promo and welcome offer is applied, then prepaid credit. Full credit settles immediately; partial credit is held and Stripe charges only the remainder through a payment_url that a human has to open and pay before anything is fulfilled; surface that link and the total to your user and never imply the purchase is complete. Call check_balance first if you want to know which way it will go. A card is never charged without a human completing the checkout. Requires a Nautilinks API key with the 'order' scope.
| Argument | Type | Description |
|---|---|---|
| items* | array | 1 to 20 line items, one per backlink to purchase. |
| promo_code | string | Optional promotion or affiliate code. The API automatically compares it with the welcome offer and applies the better discount. |
| idempotency_key | string | Stable retry key. Reuse it after a timeout to get the same quote/session; a different body with the same key is rejected. |
| sandbox_credit_cents | integer | Sandbox keys only: simulated prepaid balance, in cents, for testing full-credit, mixed, and card-only outcomes. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"site_id",
"target_url",
"anchor_text"
],
"properties": {
"format": {
"enum": [
"article_unitaire",
"lien_insere"
],
"type": "string",
"description": "Placement format. Omit or use article_unitaire for a new dedicated article; use lien_insere to insert into an existing article."
},
"site_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "The catalog site id to place the link on (from search_sites/get_site)."
},
"article_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Required when format=lien_insere; obtain it from list_site_articles."
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Optional AI-visibility project id owned by this account."
},
"target_url": {
"type": "string",
"format": "uri",
"description": "The URL on the advertiser's own site that the backlink should point to."
},
"anchor_text": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The anchor text for the link."
},
"anchor_type": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Optional anchor type hint: 'exact', 'partial', 'branded', 'generic' or 'naked'."
},
"content_brief": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "Optional brief/instructions for the article that will host the link."
},
"tier2_pack_size": {
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 3
},
{
"type": "number",
"const": 5
}
],
"description": "Optional number of tier-2 links pointing to this backlink (0, 1, 3 or 5; default 0)."
}
}
},
"maxItems": 20,
"minItems": 1,
"description": "1 to 20 line items, one per backlink to purchase."
},
"promo_code": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Optional promotion or affiliate code. The API automatically compares it with the welcome offer and applies the better discount."
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 8,
"description": "Stable retry key. Reuse it after a timeout to get the same quote/session; a different body with the same key is rejected."
},
"sandbox_credit_cents": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Sandbox keys only: simulated prepaid balance, in cents, for testing full-credit, mixed, and card-only outcomes."
}
}
}Turn the latest uncited fan-out opportunities of one owned AI-visibility project into configured backlink items. This is read-only: it creates no cart, quote, charge or order. Review the returned items, then pass them to create_order to purchase them.
| Argument | Type | Description |
|---|---|---|
| project_id* | any | AI-visibility project id. The returned items can be passed directly to create_order. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"project_id"
],
"properties": {
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "AI-visibility project id. The returned items can be passed directly to create_order."
}
}
}Use this when the user wants publication progress or the live URL for a specific order. Fetch the status of each backlink item as it moves through the fulfillment pipeline (to_assign -> assigned -> drafted -> in_review -> approved -> published -> verified), along with its anchor_text, target_url, and published_url once live. Requires a Nautilinks API key.
| Argument | Type | Description |
|---|---|---|
| order_id* | any | The order id, e.g. from list_orders or from a paid quote's get_quote_status result. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"order_id"
],
"properties": {
"order_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "The order id, e.g. from list_orders or from a paid quote's get_quote_status result."
}
}
}Use this after create_order returned a payment_url to check whether the user completed payment. Check whether the quote has been paid and get the resulting order_id once it has been converted to an order. Poll this after handing the payment_url to your user. Requires a Nautilinks API key.
| Argument | Type | Description |
|---|---|---|
| quote_id* | any | The quote_id returned by create_order. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "The quote_id returned by create_order."
}
}
}Use this after search_sites when the user needs to evaluate one backlink placement before buying. Fetch the full catalog record for a single site by id: domain, niche, authority metrics, traffic, ranked keywords, price per link, price shelf, and any other published attributes. Requires a Nautilinks API key.
| Argument | Type | Description |
|---|---|---|
| site_id* | any | The catalog site id, as returned by search_sites. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"site_id"
],
"properties": {
"site_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "The catalog site id, as returned by search_sites."
}
}
}List the AI-visibility projects owned by this account. Use a returned project id with get_ai_visibility_plan to build order-ready backlink items.
No arguments.
{
"type": "object",
"properties": {}
}Use this when the user wants their Nautilinks order history or needs to find an order id. List orders placed with this API key, including overall status and totals. Use get_order_status on a specific order id for per-link detail. Requires a Nautilinks API key.
No arguments.
{
"type": "object",
"properties": {}
}List sold-once existing articles available on one catalog site. Returns article_id plus ranking queries, positions and impressions so you can choose a page, then pass that article_id to create_order with format=lien_insere. Requires a Nautilinks API key.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum articles to return (default 50, max 200). |
| site_id* | any | The catalog site id whose available existing articles should be listed. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"site_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum articles to return (default 50, max 200)."
},
"site_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "The catalog site id whose available existing articles should be listed."
}
}
}Use this when the user wants to find or compare websites where they can buy backlinks. Search the Nautilinks catalog by niche, language, minimum Trust Flow, maximum price per link, price shelf (Plancton 5 EUR / Corail 15 EUR / Nautilus 30 EUR), or run a free-text query. Returns domain, niche, authority metrics (TF/CF/RD/Moz DA), monthly traffic, ranked keywords, price per link and shelf for each match, plus each site's id (needed for get_site and create_order). Requires a Nautilinks API key.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results to return (default 20, max 50). |
| niche | string | Filter by niche/thematic label (e.g. 'finance', 'sante', 'voyage'). |
| query | string | Free-text search across domain and niche label. |
| shelf | string | Filter by price shelf: 'Plancton' (5 EUR, entry-level sites), 'Corail' (15 EUR, established sites with a real audience and a worked link profile), or 'Nautilus' (30 EUR, the network's strongest sites by traffic, age and link profile density). Omit to search across all three shelves. |
| min_tf | integer | Minimum Majestic Trust Flow. |
| offset | integer | Pagination offset (default 0). Use with the total count returned to page through results. |
| language |
| string |
| Filter by site language code (e.g. 'fr', 'en', 'de'). |
| max_price_eur | number | Maximum price per link, in EUR. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max results to return (default 20, max 50)."
},
"niche": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Filter by niche/thematic label (e.g. 'finance', 'sante', 'voyage')."
},
"query": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Free-text search across domain and niche label."
},
"shelf": {
"enum": [
"Plancton",
"Corail",
"Nautilus"
],
"type": "string",
"description": "Filter by price shelf: 'Plancton' (5 EUR, entry-level sites), 'Corail' (15 EUR, established sites with a real audience and a worked link profile), or 'Nautilus' (30 EUR, the network's strongest sites by traffic, age and link profile density). Omit to search across all three shelves."
},
"min_tf": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Minimum Majestic Trust Flow."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset (default 0). Use with the total count returned to page through results."
},
"language": {
"type": "string",
"maxLength": 10,
"minLength": 2,
"description": "Filter by site language code (e.g. 'fr', 'en', 'de')."
},
"max_price_eur": {
"type": "number",
"minimum": 0,
"description": "Maximum price per link, in EUR."
}
}
}