Subtraq

Create short links, track clicks and attribute sales — 8 tools backed by the Subtraq API.

我该使用它吗

质量与安全性

A
描述质量
78%
模式完整度
98%
命名质量
100%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(4)

  • LOWTool 'create_space' description lacks action verb在 create_space 中
  • LOWTool 'create_link' description lacks action verb在 create_link 中
  • LOWTool 'get_link' description lacks action verb在 get_link 中
  • LOWTool 'track_sale' description lacks action verb在 track_sale 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,707token 数(工具定义)
~1.6 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.33%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 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"
  ]
}

社区

评价此服务器

证据

最近观测

已验证未记录版本8 个工具