dub
Short links with click, lead and sale analytics, customers, tags and the partner programme.
使うべきか
品質と安全性
検出事項(2)
- LOWdub_update_link 内
- LOWdub_approve_partner_application 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"dub": {
"url": "https://dub.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://dub.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(22)
🟢dub_list_links(domain, search, tagNames, folderId, showArchived, ...)
List short links, filtered by domain, tag, folder or a text search. Dub: GET /links.
入力スキーマ
{
"type": "object",
"properties": {
"domain": {
"description": "Only links on this short domain.",
"type": "string"
},
"search": {
"description": "Free-text search over the key, URL and title.",
"type": "string"
},
"tagNames": {
"description": "Only links carrying these tag names.",
"type": "array",
"items": {
"type": "string"
}
},
"folderId": {
"description": "Only links in this folder.",
"type": "string"
},
"showArchived": {
"description": "Include archived links.",
"type": "boolean"
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_get_link(linkId, externalId, domain, key)
Fetch a single link by its id, its external id, or its domain plus key. Dub: GET /links/info.
入力スキーマ
{
"type": "object",
"properties": {
"linkId": {
"description": "The link's Dub id.",
"type": "string"
},
"externalId": {
"description": "Your own id for the link.",
"type": "string"
},
"domain": {
"description": "The short domain, used with key.",
"type": "string"
},
"key": {
"description": "The short key, used with domain.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_count_links(domain, search, folderId, groupBy)
Count links matching a filter, optionally grouped by domain, tag or folder. Cheaper than listing when you only need totals. Dub: GET /links/count.
入力スキーマ
{
"type": "object",
"properties": {
"domain": {
"description": "Only links on this short domain.",
"type": "string"
},
"search": {
"description": "Free-text search.",
"type": "string"
},
"folderId": {
"description": "Only links in this folder.",
"type": "string"
},
"groupBy": {
"description": "Return counts grouped by this dimension.",
"type": "string",
"enum": [
"domain",
"tagId",
"folderId",
"userId"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_get_analytics(event, groupBy, linkId, domain, key, ...)
Get aggregated click, lead and sale analytics, grouped by a dimension such as country, device, referer or top links. The main reporting read. Dub: GET /analytics.
入力スキーマ
{
"type": "object",
"properties": {
"event": {
"description": "Which event type to report. Defaults to clicks.",
"type": "string",
"enum": [
"clicks",
"leads",
"sales",
"composite"
]
},
"groupBy": {
"description": "Dimension to group by, e.g. count, timeseries, top_links, countries, cities, devices, browsers, os, referers, utm_sources.",
"type": "string"
},
"linkId": {
"description": "Only this link.",
"type": "string"
},
"domain": {
"description": "Only links on this domain.",
"type": "string"
},
"key": {
"description": "The short key, used with domain.",
"type": "string"
},
"interval": {
"description": "Relative time window. Use start/end instead for an absolute range.",
"type": "string",
"enum": [
"24h",
"7d",
"30d",
"90d",
"1y",
"mtd",
"qtd",
"ytd",
"all"
]
},
"start": {
"description": "ISO-8601 start of an absolute range.",
"type": "string"
},
"end": {
"description": "ISO-8601 end of an absolute range.",
"type": "string"
},
"country": {
"description": "Filter to one country code.",
"type": "string"
},
"device": {
"description": "Filter to one device type.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_events(event, linkId, customerId, interval, start, ...)
List individual click, lead and sale events rather than aggregates — the row-level detail behind the analytics. Dub: GET /events.
入力スキーマ
{
"type": "object",
"properties": {
"event": {
"description": "Which event type to list.",
"type": "string",
"enum": [
"clicks",
"leads",
"sales"
]
},
"linkId": {
"description": "Only this link's events.",
"type": "string"
},
"customerId": {
"description": "Only this customer's events.",
"type": "string"
},
"interval": {
"description": "Relative time window. Use start/end instead for an absolute range.",
"type": "string",
"enum": [
"24h",
"7d",
"30d",
"90d",
"1y",
"mtd",
"qtd",
"ytd",
"all"
]
},
"start": {
"description": "ISO-8601 start of an absolute range.",
"type": "string"
},
"end": {
"description": "ISO-8601 end of an absolute range.",
"type": "string"
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_customers(email, externalId, search, linkId, page, ...)
List the customers Dub has attributed to links, by email, external id or link. Dub: GET /customers.
入力スキーマ
{
"type": "object",
"properties": {
"email": {
"description": "Only the customer with this email.",
"type": "string"
},
"externalId": {
"description": "Your own id for the customer.",
"type": "string"
},
"search": {
"description": "Free-text search.",
"type": "string"
},
"linkId": {
"description": "Only customers attributed to this link.",
"type": "string"
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_get_customer(customer_id)
Fetch a single customer with their attribution. Dub: GET /customers/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"description": "The customer's Dub id."
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_tags(search, page, pageSize)
List the tags available for organising links. Dub: GET /tags.
入力スキーマ
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search over tag names.",
"type": "string"
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_folders(search, page, pageSize)
List link folders and their access levels. Dub: GET /folders.
入力スキーマ
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search over folder names.",
"type": "string"
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_domains(archived, search, page, pageSize)
List the short domains configured on the workspace. Dub: GET /domains.
入力スキーマ
{
"type": "object",
"properties": {
"archived": {
"description": "Include archived domains.",
"type": "boolean"
},
"search": {
"description": "Free-text search.",
"type": "string"
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_partners(status, email, search, page, pageSize)
List the partners (affiliates) in the programme, by status, country or email. Dub: GET /partners.
入力スキーマ
{
"type": "object",
"properties": {
"status": {
"description": "Only partners in this state, e.g. approved, pending.",
"type": "string"
},
"email": {
"description": "Only the partner with this email.",
"type": "string"
},
"search": {
"description": "Free-text search.",
"type": "string"
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_get_partner_analytics(partnerId, groupBy, interval, start, end)
Get analytics for the partner programme — clicks, leads, sales and revenue per partner. Dub: GET /partners/analytics.
入力スキーマ
{
"type": "object",
"properties": {
"partnerId": {
"description": "Only this partner.",
"type": "string"
},
"groupBy": {
"description": "Dimension to group by, e.g. count, timeseries, top_partners.",
"type": "string"
},
"interval": {
"description": "Relative time window. Use start/end instead for an absolute range.",
"type": "string",
"enum": [
"24h",
"7d",
"30d",
"90d",
"1y",
"mtd",
"qtd",
"ytd",
"all"
]
},
"start": {
"description": "ISO-8601 start of an absolute range.",
"type": "string"
},
"end": {
"description": "ISO-8601 end of an absolute range.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_partner_applications(page, pageSize)
List pending applications to join the partner programme. Dub: GET /partners/applications.
入力スキーマ
{
"type": "object",
"properties": {
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_commissions(partnerId, customerId, status, type, interval, ...)
List partner commissions, by partner, status, customer or time window. Dub: GET /commissions.
入力スキーマ
{
"type": "object",
"properties": {
"partnerId": {
"description": "Only this partner's commissions.",
"type": "string"
},
"customerId": {
"description": "Only commissions from this customer.",
"type": "string"
},
"status": {
"description": "Only commissions in this state.",
"type": "string"
},
"type": {
"description": "Only commissions of this type, e.g. sale, lead, click.",
"type": "string"
},
"interval": {
"description": "Relative time window. Use start/end instead for an absolute range.",
"type": "string",
"enum": [
"24h",
"7d",
"30d",
"90d",
"1y",
"mtd",
"qtd",
"ytd",
"all"
]
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢dub_list_payouts(partnerId, status, page, pageSize)
List partner payouts and their status. Dub: GET /payouts.
入力スキーマ
{
"type": "object",
"properties": {
"partnerId": {
"description": "Only this partner's payouts.",
"type": "string"
},
"status": {
"description": "Only payouts in this state.",
"type": "string"
},
"page": {
"description": "1-based page number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴dub_create_link(url, domain, key, externalId, title, ...)
Create a short link. Omit `key` to let Dub generate one. Dub: POST /links.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The destination URL."
},
"domain": {
"description": "Short domain to create it on. Defaults to the workspace default.",
"type": "string"
},
"key": {
"description": "The short key. Omit for a random one.",
"type": "string"
},
"externalId": {
"description": "Your own id for this link.",
"type": "string"
},
"title": {
"description": "Custom link preview title.",
"type": "string"
},
"description": {
"description": "Custom link preview description.",
"type": "string"
},
"tagNames": {
"description": "Tags to attach, by name.",
"type": "array",
"items": {
"type": "string"
}
},
"folderId": {
"description": "Folder to file it under.",
"type": "string"
},
"comments": {
"description": "An internal note.",
"type": "string"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴dub_update_link(linkId, url, key, title, tagNames, ...)
Change a link's destination, key, tags or archived state. Dub: PATCH /links/{linkId}.
入力スキーマ
{
"type": "object",
"properties": {
"linkId": {
"type": "string",
"description": "The link to update."
},
"url": {
"description": "New destination URL.",
"type": "string"
},
"key": {
"description": "New short key.",
"type": "string"
},
"title": {
"description": "New preview title.",
"type": "string"
},
"tagNames": {
"description": "Replace the link's tags.",
"type": "array",
"items": {
"type": "string"
}
},
"archived": {
"description": "Archive or unarchive the link.",
"type": "boolean"
},
"comments": {
"description": "New internal note.",
"type": "string"
}
},
"required": [
"linkId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴dub_delete_link(linkId)
Delete a short link. The URL stops resolving immediately and its analytics go with it. Dub: DELETE /links/{linkId}.
入力スキーマ
{
"type": "object",
"properties": {
"linkId": {
"type": "string",
"description": "The link to delete."
}
},
"required": [
"linkId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴dub_create_tag(name, color)
Create a tag for organising links. Dub: POST /tags.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The tag name."
},
"color": {
"description": "Tag colour in the dashboard.",
"type": "string",
"enum": [
"red",
"yellow",
"green",
"blue",
"purple",
"pink",
"brown"
]
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴dub_create_folder(name, description, accessLevel)
Create a folder for grouping links. Dub: POST /folders.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The folder name."
},
"description": {
"description": "What the folder is for.",
"type": "string"
},
"accessLevel": {
"description": "Default workspace access to the folder.",
"type": "string",
"enum": [
"write",
"read",
"none"
]
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴dub_approve_partner_application(applicationId, groupId)
Approve an application to join the partner programme. The partner gains links and starts earning commission. Dub: POST /partners/applications/approve.
入力スキーマ
{
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"description": "The application to approve."
},
"groupId": {
"description": "Place the partner in this group.",
"type": "string"
}
},
"required": [
"applicationId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴dub_reject_partner_application(applicationId)
Reject an application to join the partner programme. Dub: POST /partners/applications/reject.
入力スキーマ
{
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"description": "The application to reject."
}
},
"required": [
"applicationId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス