Dub MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DUB_API_KEY | No | Private scoped workspace REST key | |
| DUB_ACCOUNTS | No | Private unique {name,api_key,token_file} workspace profiles; no global fallback | |
| DUB_AUDIT_LOG | No | Optional private metadata-only guard log; no delivery receipt | |
| DUB_READ_ONLY | No | 1/true hides and directly refuses 39 mutations/private-output writes | |
| DUB_TOKEN_FILE | No | Absolute owner-private regular token-only file at most 64 KiB; overrides selected key; cached until restart | |
| DUB_DEFAULT_ACCOUNT | No | Exact configured label; first profile by default | |
| DUB_ALLOW_DESTRUCTIVE | No | 0/false refuses all confirmed operations | |
| DUB_REQUEST_TIMEOUT_MS | No | 100–300000; default 30000; no automatic retries | |
| DUB_MIN_REQUEST_INTERVAL_MS | No | 0–10000; default 1100; one-process request-start spacing |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_linkC | Create a link for the authenticated workspace. |
| list_linksB | Retrieve a paginated list of links for the authenticated workspace. |
| get_links_countB | Retrieve the number of links for the authenticated workspace. |
| get_linkC | Retrieve the info for a link. |
| update_linkB | Update a link for the authenticated workspace. If there's no change, returns it as it is. |
| delete_linkC | Delete a link for the authenticated workspace. |
| bulk_create_linksB | Bulk create up to 100 links for the authenticated workspace. |
| bulk_update_linksB | Bulk update up to 100 links with the same data for the authenticated workspace. |
| bulk_delete_linksB | Bulk delete up to 100 links for the authenticated workspace. |
| upsert_linkB | Upsert a link for the authenticated workspace by its URL. If a link with the same URL already exists, return it (or update it if there are any changes). Otherwise, a new link will be created. |
| get_link_statsB | Retrieve analytics for a link, a domain, or the authenticated workspace. The response type depends on the |
| list_eventsC | Retrieve a paginated list of events for the authenticated workspace. |
| create_tagB | Create a tag for the authenticated workspace. |
| list_tagsB | Retrieve a paginated list of tags for the authenticated workspace. |
| update_tagC | Update a tag in the workspace. |
| delete_tagA | Delete a tag from the workspace. All existing links will still work, but they will no longer be associated with this tag. |
| create_folderB | Create a folder for the authenticated workspace. |
| list_foldersB | Retrieve a paginated list of folders for the authenticated workspace. |
| update_folderC | Update a folder in the workspace. |
| delete_folderA | Delete a folder from the workspace. All existing links will still work, but they will no longer be associated with this folder. |
| create_domainC | Create a domain for the authenticated workspace. |
| list_domainsB | Retrieve a paginated list of domains for the authenticated workspace. |
| update_domainC | Update a domain for the authenticated workspace. |
| delete_domainA | Delete a domain from a workspace. It cannot be undone. This will also delete all the links associated with the domain. |
| register_domainA | Register a domain for the authenticated workspace. Only available for Enterprise Plans. |
| check_domain_statusA | Check if a domain name is available for purchase. You can check multiple domains at once. |
| track_leadD | Track a lead for a short link. |
| track_saleC | Track a sale for a short link. |
| track_openC | This endpoint is used to track when a user opens your app via a Dub-powered deep link (for both iOS and Android). |
| list_customersB | Retrieve a paginated list of customers for the authenticated workspace. |
| get_customerA | Retrieve a customer by ID for the authenticated workspace. To retrieve a customer by external ID, prefix the ID with |
| update_customerC | Update a customer for the authenticated workspace. |
| delete_customerB | Delete a customer from a workspace. |
| create_partnerA | Creates or updates a partner record (upsert behavior). If a partner with the same email already exists, their program enrollment will be updated with the provided tenantId. If no existing partner is found, a new partner will be created using the supplied information. |
| list_partnersC | List all partners for a partner program. |
| create_partner_linkC | Create a link for a partner that is enrolled in your program. |
| retrieve_partner_linksC | Retrieve a partner's links by their partner ID or tenant ID. |
| upsert_partner_linkA | Upsert a link for a partner that is enrolled in your program. If a link with the same URL already exists, return it (or update it if there are any changes). Otherwise, a new link will be created. |
| retrieve_partner_analyticsB | Retrieve analytics for a partner within a program. The response type vary based on the |
| ban_partnerA | Ban a partner from your program. This will disable all links and mark all commissions as canceled. |
| deactivate_partnerA | This will deactivate the partner from your program and disable all their active links. Their commissions and payouts will remain intact. You can reactivate them later if needed. |
| list_program_applicationsA | Retrieve a paginated list of applications for your partner program. Filter by |
| approve_program_applicationA | Approve a pending partner application to your program. The partner will be enrolled in the specified group and notified of the approval. |
| reject_program_applicationA | Reject a pending partner application to your program. The partner will be notified via email that their application was not approved. |
| list_discount_codesA | Retrieve a paginated list of discount codes in a program or filtered by partner, discount, or code. |
| create_discount_codeA | Create a discount code for a partner. The partner's group must already have a discount assigned to it, and the discount code must be associated with a link that is not already linked with another discount code. |
| delete_discount_codeA | Delete a discount code for a partner by its unique ID or alphanumeric code. This will also disable the code in your connected discount provider (Stripe, Shopify, or custom via |
| create_commissionA | Create one or more commissions (custom, lead or sale) for a partner. Custom commissions accept a negative |
| list_commissionsB | Retrieve a paginated list of commissions for your partner program. |
| update_commissionA | Update an existing commission amount. This is useful for handling refunds (partial or full) or fraudulent sales. |
| bulk_update_commissionsB | Bulk update up to 100 commissions with the same status. |
| list_payoutsB | Retrieve a paginated list of payouts for your partner program. |
| create_referrals_embed_tokenA | Create a referrals embed token for the given partner/tenant. The endpoint first attempts to locate an existing enrollment using the provided tenantId. If no enrollment is found, it resolves the partner by email and creates a new enrollment as needed. This results in an upsert-style flow that guarantees a valid enrollment and returns a usable embed token. |
| get_qr_codeC | Retrieve a QR code for a link. |
| list_bounty_submissionsB | List all submissions for a specific bounty in your partner program. |
| approve_bounty_submissionC | Approve a bounty submission. Optionally specify a custom reward amount. |
| reject_bounty_submissionC | Reject a bounty submission with a specified reason and optional note. |
| list_accountsB | Local profile labels/default/auth method only. No keys, token paths, provider identity or network request. |
| get_operation_schemaB | Local reviewed method/path/query/body schema and provenance for one native tool. No credentials or provider request. |
| preview_link_batchA | Local validation and SHA-256 of exact ordered link/tag/folder work, selected profile label and reviewed schema. No provider reads, key load, identity check, price or rollback guarantee. |
| submit_link_batchA | Confirmed one-to-twenty ordered link/tag/folder tasks. Prevalidate all and verify exact hash before first request. Stop on first failure with known results/failed index/unattempted indices; no retries, rollback or implicit continuation. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 61 tools
Most tools target a distinct resource+action, and descriptions clarify boundaries well. Some pairs invite confusion—create_link vs upsert_link vs bulk_create_links, and preview_link_batch vs submit_link_batch vs bulk_create_links—but they are separable with careful reading.
Predominantly consistent verb_noun snake_case (create_tag, list_folders, delete_domain, bulk_update_links). Minor deviations: mixing get_ vs retrieve_ (get_link vs retrieve_partner_links, retrieve_partner_analytics) and a few irregular forms like get_links_count.
61 tools is very heavy for a single server, well into the too-many range. The domain (links, tags, folders, domains, partners, commissions, payouts, bounties, discount codes, customers, tracking, plus meta-tools) is genuinely broad, which softens but does not justify the volume.
Strong lifecycle coverage: full CRUD for links, tags, folders, and domains, plus partner/commission/bounty workflows. Minor gaps exist—payouts are list-only, discount codes lack an update, and there is no explicit create_customer (customers appear upserted via tracking).