Subtraq
Create short links, track clicks and attribute sales — 8 tools backed by the Subtraq API.
我该使用它吗
质量与安全性
发现(4)
- LOW在 create_space 中
- LOW在 create_link 中
- LOW在 get_link 中
- LOW在 track_sale 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"subtraq": {
"url": "https://subtraq.co/api/mcp"
}
}
}远程端点
https://subtraq.co/api/mcpstreamable-http它能做什么
工具清单
工具(8)
🟢list_spaces(limit, cursor)
Liste les espaces du compte. Un espace = un client, une marque ou un projet ; tout le reste (liens, clics, ventes) vit dedans.
输入模式
{
"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`)."
}
}
}🟡create_space(name, slug)
Crée un espace client. Refusé avec le code `space_limit_reached` si la formule est pleine.
输入模式
{
"type": "object",
"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."
}
},
"required": [
"name"
]
}🟢list_links(space, status, limit, cursor)
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.
输入模式
{
"type": "object",
"properties": {
"space": {
"type": "string",
"description": "Raccourci de l'espace. Omis = tous les espaces du compte."
},
"status": {
"type": "string",
"description": "active (défaut), archived, ou all."
},
"limit": {
"type": "integer",
"description": "1 à 100."
},
"cursor": {
"type": "string",
"description": "Curseur de la page suivante."
}
}
}🟡create_link(space, destination, parentId, slug, label, ...)
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.
输入模式
{
"type": "object",
"properties": {
"space": {
"type": "string",
"description": "Raccourci de l'espace client."
},
"destination": {
"type": "string",
"description": "URL d'arrivée. Obligatoire pour un parent, interdite pour un placement."
},
"parentId": {
"type": "string",
"description": "Identifiant du lien parent, pour créer un placement."
},
"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 »."
},
"utmSource": {
"type": "string",
"description": "utm_source du placement."
},
"utmMedium": {
"type": "string",
"description": "utm_medium du placement."
},
"utmCampaign": {
"type": "string",
"description": "utm_campaign du placement."
},
"utmTerm": {
"type": "string",
"description": "utm_term du placement."
},
"utmContent": {
"type": "string",
"description": "utm_content du placement."
},
"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."
}
},
"required": [
"space"
]
}🟢get_link(id)
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.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifiant du lien."
}
},
"required": [
"id"
]
}🟡update_link(id, destination, label, archived, domain, ...)
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.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifiant du lien."
},
"destination": {
"type": "string",
"description": "Nouvelle URL d'arrivée (liens parents seulement)."
},
"label": {
"type": "string",
"description": "Nouveau libellé."
},
"archived": {
"type": "boolean",
"description": "true pour archiver, false pour réactiver."
},
"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."
},
"slug": {
"type": "string",
"description": "Nouveau raccourci. Pris sur le domaine visé : erreur `slug_taken`, avec un raccourci libre proposé dans `details.suggestion`."
}
},
"required": [
"id"
]
}🟢get_analytics(space, period, model)
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.
输入模式
{
"type": "object",
"properties": {
"space": {
"type": "string",
"description": "Raccourci de l'espace client."
},
"period": {
"type": "string",
"description": "7d, 30d (défaut), 90d ou all."
},
"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."
}
},
"required": [
"space"
]
}⚪track_sale(space, email, externalId, clickId, amount, ...)
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.
输入模式
{
"type": "object",
"properties": {
"space": {
"type": "string",
"description": "Raccourci de l'espace client."
},
"email": {
"type": "string",
"description": "Email de la personne — le plus simple pour la retrouver."
},
"externalId": {
"type": "string",
"description": "Son identifiant dans votre système, si vous en avez un."
},
"clickId": {
"type": "string",
"description": "Identifiant de clic, si vous l'avez conservé."
},
"amount": {
"type": "integer",
"description": "Montant en CENTIMES. 43 € s'écrit 4300."
},
"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."
}
},
"required": [
"space",
"amount",
"invoiceId"
]
}社区
证据