dub

Short links with click, lead and sale analytics, customers, tags and the partner programme.

사용해야 할까요

품질 및 안전성

A
설명 품질
94%
스키마 완전성
94%
이름 품질
79%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • LOWTool 'dub_update_link' description lacks action verbdub_update_link에서
  • LOWTool 'dub_approve_partner_application' name length outside 3-30 rangedub_approve_partner_application에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,671토큰 (도구 정의)
~1.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.87%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 22개