Create short links, track clicks and attribute sales — 8 tools backed by the Subtraq API.
Call this server's tools from your browser. Nothing to install.
Bearer <Subtraq API key>. Create one in Subtraq under Settings > API.
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.
Crée un lien court. Sans `parentId`, c'est un lien parent et `destination` est obligatoire. Avec `parentId`, c'est un placement : il hérite de la destination du parent et porte ses propres UTM. Renvoie `shortUrl`, prêt à publier.
Raccourci de l'espace client.
Raccourci souhaité. Tiré au sort s'il est omis.
Nom du placement, par exemple « Pub Meta — mars ».
Adresse qui porte le lien (« liens.votresite.fr »). Omise = le même choix que l'écran de création : le domaine de marque réservé à l'espace, sinon l'unique domaine de marque du compte, sinon l'adresse offerte de l'espace (« client.sbtq.link ») ; pour un placement, le domaine de son parent. Pour le domaine partagé, le nommer : « sbtq.link » (la valeur `domain` d'un lien partagé). Un domaine de marque doit être vérifié dans le compte, et libre pour cet espace.
utm_term du placement.
Identifiant du lien parent, pour créer un placement.
utm_medium du placement.
utm_source du placement.
utm_content du placement.
URL d'arrivée. Obligatoire pour un parent, interdite pour un placement.
utm_campaign du placement.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Crée un lien court. Sans `parentId`, c'est un lien parent et `destination` est obligatoire. Avec `parentId`, c'est un placement : il hérite de la destination du parent et porte ses propres UTM. Renvoie `shortUrl`, prêt à publier.
| Argument | Type | Description |
|---|---|---|
| slug | string | Raccourci souhaité. Tiré au sort s'il est omis. |
| label | string | Nom du placement, par exemple « Pub Meta — mars ». |
| space* | string | Raccourci de l'espace client. |
| domain | string | Adresse qui porte le lien (« liens.votresite.fr »). Omise = le même choix que l'écran de création : le domaine de marque réservé à l'espace, sinon l'unique domaine de marque du compte, sinon l'adresse offerte de l'espace (« client.sbtq.link ») ; pour un placement, le domaine de son parent. Pour le domaine partagé, le nommer : « sbtq.link » (la valeur `domain` d'un lien partagé). Un domaine de marque doit être vérifié dans le compte, et libre pour cet espace. |
| utmTerm | string | utm_term du placement. |
| parentId | string | Identifiant du lien parent, pour créer un placement. |
| utmMedium | string | utm_medium du placement. |
| utmSource | string | utm_source du placement. |
| utmContent | string | utm_content du placement. |
| destination | string | URL d'arrivée. Obligatoire pour un parent, interdite pour un placement. |
| utmCampaign | string | utm_campaign du placement. |
{
"type": "object",
"required": [
"space"
],
"properties": {
"slug": {
"type": "string",
"description": "Raccourci souhaité. Tiré au sort s'il est omis."
},
"label": {
"type": "string",
"description": "Nom du placement, par exemple « Pub Meta — mars »."
},
"space": {
"type": "string",
"description": "Raccourci de l'espace client."
},
"domain": {
"type": "string",
"description": "Adresse qui porte le lien (« liens.votresite.fr »). Omise = le même choix que l'écran de création : le domaine de marque réservé à l'espace, sinon l'unique domaine de marque du compte, sinon l'adresse offerte de l'espace (« client.sbtq.link ») ; pour un placement, le domaine de son parent. Pour le domaine partagé, le nommer : « sbtq.link » (la valeur `domain` d'un lien partagé). Un domaine de marque doit être vérifié dans le compte, et libre pour cet espace."
},
"utmTerm": {
"type": "string",
"description": "utm_term du placement."
},
"parentId": {
"type": "string",
"description": "Identifiant du lien parent, pour créer un placement."
},
"utmMedium": {
"type": "string",
"description": "utm_medium du placement."
},
"utmSource": {
"type": "string",
"description": "utm_source du placement."
},
"utmContent": {
"type": "string",
"description": "utm_content du placement."
},
"destination": {
"type": "string",
"description": "URL d'arrivée. Obligatoire pour un parent, interdite pour un placement."
},
"utmCampaign": {
"type": "string",
"description": "utm_campaign du placement."
}
}
}Crée un espace client. Refusé avec le code `space_limit_reached` si la formule est pleine.
| Argument | Type | Description |
|---|---|---|
| name* | string | Nom affiché, par exemple « Maison Lartigue ». |
| slug | string | Raccourci dans les URL. Déduit du nom s'il est omis. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Nom affiché, par exemple « Maison Lartigue »."
},
"slug": {
"type": "string",
"description": "Raccourci dans les URL. Déduit du nom s'il est omis."
}
}
}Les chiffres d'un espace : clics, prospects, ventes, revenu ATTRIBUÉ et revenu NON attribué, plus le détail placement par placement. Montants en CENTIMES. Subtraq ne convertit pas les devises : si `mixedCurrencies` est vrai, les totaux ne concernent que `currency`. `model` choisit la lecture de l'attribution ; la réponse rappelle toujours lequel a servi.
| Argument | Type | Description |
|---|---|---|
| model | string | Modèle d'attribution : `first` (premier clic, défaut et référence du produit), `last` (dernier clic avant la conversion) ou `linear` (partage entre tous les placements cliqués, revenu réparti au centime près). Dans les trois cas, attribué + non attribué = revenu total. |
| space* | string | Raccourci de l'espace client. |
| period | string | 7d, 30d (défaut), 90d ou all. |
{
"type": "object",
"required": [
"space"
],
"properties": {
"model": {
"type": "string",
"description": "Modèle d'attribution : `first` (premier clic, défaut et référence du produit), `last` (dernier clic avant la conversion) ou `linear` (partage entre tous les placements cliqués, revenu réparti au centime près). Dans les trois cas, attribué + non attribué = revenu total."
},
"space": {
"type": "string",
"description": "Raccourci de l'espace client."
},
"period": {
"type": "string",
"description": "7d, 30d (défaut), 90d ou all."
}
}
}Détaille un lien : sa destination FINALE (UTM comprises, telle que la reçoit le site d'arrivée) et ses clics sur 30 jours.
| Argument | Type | Description |
|---|---|---|
| id* | string | Identifiant du lien. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Identifiant du lien."
}
}
}Liste les liens. Un lien PARENT porte la destination ; un PLACEMENT (sublink) porte les UTM d'une publication précise et hérite du reste.
| Argument | Type | Description |
|---|---|---|
| limit | integer | 1 à 100. |
| space | string | Raccourci de l'espace. Omis = tous les espaces du compte. |
| cursor | string | Curseur de la page suivante. |
| status | string | active (défaut), archived, ou all. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "1 à 100."
},
"space": {
"type": "string",
"description": "Raccourci de l'espace. Omis = tous les espaces du compte."
},
"cursor": {
"type": "string",
"description": "Curseur de la page suivante."
},
"status": {
"type": "string",
"description": "active (défaut), archived, ou all."
}
}
}Liste les espaces du compte. Un espace = un client, une marque ou un projet ; tout le reste (liens, clics, ventes) vit dedans.
| Argument | Type | Description |
|---|---|---|
| limit | integer | 1 à 100, 50 par défaut. |
| cursor | string | Curseur renvoyé par l'appel précédent (`nextCursor`). |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "1 à 100, 50 par défaut."
},
"cursor": {
"type": "string",
"description": "Curseur renvoyé par l'appel précédent (`nextCursor`)."
}
}
}Enregistre une VENTE et la rattache au placement d'origine de la personne. Montant en CENTIMES. `invoiceId` rend l'appel idempotent : le rejouer ne facture jamais deux fois. Une vente ne peut PAS être envoyée depuis un navigateur.
| Argument | Type | Description |
|---|---|---|
| string | Email de la personne — le plus simple pour la retrouver. | |
| space* | string | Raccourci de l'espace client. |
| amount* | integer | Montant en CENTIMES. 43 € s'écrit 4300. |
| clickId | string | Identifiant de clic, si vous l'avez conservé. |
| currency | string | Code à trois lettres. USD par défaut. |
| invoiceId* | string | Votre numéro de facture — c'est lui qui garantit l'idempotence. |
| externalId | string | Son identifiant dans votre système, si vous en avez un. |
{
"type": "object",
"required": [
"space",
"amount",
"invoiceId"
],
"properties": {
"email": {
"type": "string",
"description": "Email de la personne — le plus simple pour la retrouver."
},
"space": {
"type": "string",
"description": "Raccourci de l'espace client."
},
"amount": {
"type": "integer",
"description": "Montant en CENTIMES. 43 € s'écrit 4300."
},
"clickId": {
"type": "string",
"description": "Identifiant de clic, si vous l'avez conservé."
},
"currency": {
"type": "string",
"description": "Code à trois lettres. USD par défaut."
},
"invoiceId": {
"type": "string",
"description": "Votre numéro de facture — c'est lui qui garantit l'idempotence."
},
"externalId": {
"type": "string",
"description": "Son identifiant dans votre système, si vous en avez un."
}
}
}Modifie la destination, le libellé ou l'ADRESSE d'un lien (`domain` et/ou `slug`), ou l'archive. Changer d'adresse ne casse rien : l'ancienne adresse continue de rediriger vers le même endroit et ses clics comptent sur ce lien (`previousShortUrls`) ; les placements qui partageaient son domaine le suivent. Un lien n'est JAMAIS supprimé : archivé, il cesse de rediriger (anciennes adresses comprises) mais son historique reste.
| Argument | Type | Description |
|---|---|---|
| id* | string | Identifiant du lien. |
| slug | string | Nouveau raccourci. Pris sur le domaine visé : erreur `slug_taken`, avec un raccourci libre proposé dans `details.suggestion`. |
| label | string | Nouveau libellé. |
| domain | string | Nouveau domaine de l'adresse (« liens.votresite.fr »), vérifié dans le compte et libre pour l'espace du lien ; « sbtq.link » pour revenir au domaine partagé. L'ancienne adresse continue de marcher. |
| archived | boolean | true pour archiver, false pour réactiver. |
| destination | string | Nouvelle URL d'arrivée (liens parents seulement). |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Identifiant du lien."
},
"slug": {
"type": "string",
"description": "Nouveau raccourci. Pris sur le domaine visé : erreur `slug_taken`, avec un raccourci libre proposé dans `details.suggestion`."
},
"label": {
"type": "string",
"description": "Nouveau libellé."
},
"domain": {
"type": "string",
"description": "Nouveau domaine de l'adresse (« liens.votresite.fr »), vérifié dans le compte et libre pour l'espace du lien ; « sbtq.link » pour revenir au domaine partagé. L'ancienne adresse continue de marcher."
},
"archived": {
"type": "boolean",
"description": "true pour archiver, false pour réactiver."
},
"destination": {
"type": "string",
"description": "Nouvelle URL d'arrivée (liens parents seulement)."
}
}
}