dub

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

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
94%
Vollständigkeit des Schemas
94%
Qualität der Benennung
79%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (2)

  • LOWTool 'dub_update_link' description lacks action verbin dub_update_link
  • LOWTool 'dub_approve_partner_application' name length outside 3-30 rangein dub_approve_partner_application

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,671Tokens (Tool-Definitionen)
~1.4 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.87% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "dub": {
      "url": "https://dub.usefulapi.io/mcp"
    }
  }
}

Remote-Endpunkte

https://dub.usefulapi.io/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (22)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢dub_list_links(domain, search, tagNames, folderId, showArchived, ...)

List short links, filtered by domain, tag, folder or a text search. Dub: GET /links.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "applicationId": {
      "type": "string",
      "description": "The application to reject."
    }
  },
  "required": [
    "applicationId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet22 Tools