Bitly MCP connector
OAuth 2.1/DCRMarketingCRM & SalesConnect with Bitly MCP for URL shortening, link analytics, and branded links.
Bitly MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'bitlymcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Bitly MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'bitlymcp_get_custom_domains',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "bitlymcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Bitly MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="bitlymcp_get_custom_domains",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Create and manage short links — shorten URLs, create links with custom back-halves, update link metadata, and delete links
- Create and manage QR codes — generate QR codes for links, update QR code settings, and retrieve QR code images
- Analyze link performance — get click summaries, engagement metrics, and breakdowns by city, country, device, referrer, and referring domain
- Analyze QR code scans — get scan summaries and breakdowns by city, country, device, and browser
- Analyze group-level engagement — query top links, clicks, scans, and engagement trends across all links in a group
- Manage account structure — retrieve organizations, groups, custom domains, and user details
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
bitlymcp_bulk_upload_file#Upload a CSV or XLSX file to the signed URL returned by bulk_upload_validate. Pass the upload_url, headers, and file_content from the validate response. Requires an enterprise plan.6 params
Upload a CSV or XLSX file to the signed URL returned by bulk_upload_validate. Pass the upload_url, headers, and file_content from the validate response. Requires an enterprise plan.
file_contentstringrequiredThe actual file content (CSV or XLSX file bytes as a string) from the conversation context.headersobjectrequiredThe headers map returned from bulk_upload_validate (as a JSON object with string keys and string values).upload_urlstringrequiredThe signed upload URL returned from bulk_upload_validate._metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.content_typestringoptionalMIME type for the upload. e.g. text/csv for CSV files or application/vnd.openxmlformats-officedocument.spreadsheetml.sheet for XLSX.response_formatstringoptional'text' (default) or 'json'bitlymcp_bulk_upload_validate#Validate a bulk upload request and get a signed upload URL. upload_type: 'link' (links only), 'qr_code' (QR codes, requires template_id), 'coupled_link' (both, requires template_id). Template IDs: 'QTDTmplWLogo' (with Bitly logo), 'QTDTmplNLogo' (without). Returns upload_url and headers for use with bulk_upload_file. Requires an enterprise plan.7 params
Validate a bulk upload request and get a signed upload URL. upload_type: 'link' (links only), 'qr_code' (QR codes, requires template_id), 'coupled_link' (both, requires template_id). Template IDs: 'QTDTmplWLogo' (with Bitly logo), 'QTDTmplNLogo' (without). Returns upload_url and headers for use with bulk_upload_file. Requires an enterprise plan.
filenamestringrequiredLogical filename for the bulk upload (for example, "contacts.csv" or "links.xlsx").upload_typestringrequiredType of bulk upload. Must be exactly one of: "link", "qr_code", or "coupled_link"._metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.domainstringoptionalOptional short domain to use for created links. If omitted, backend defaults and validation apply.group_guidstringoptionalOptional group GUID to associate with this bulk upload. If omitted, the default group may be used.response_formatstringoptional'text' (default) or 'json'template_idstringoptionalQR code template ID. Required for qr_code and coupled_link uploads. Use 'QTDTmplWLogo' to include Bitly logo, 'QTDTmplNLogo' to exclude it.bitlymcp_create_qr_code#Create a QR code linked to a URL. Supports visual customizations (colors, patterns). Use create_short_link_with_qr to create both a short link and QR code in one step.8 params
Create a QR code linked to a URL. Supports visual customizations (colors, patterns). Use create_short_link_with_qr to create both a short link and QR code in one step.
group_guidstringrequiredThe GUID of the group to create the QR code inlong_urlstringrequiredThe destination URL for the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.archivedbooleanoptionalWhether the QR code should be archived (default: false)bitlink_idstringoptionalExisting short link ID to use as destinationrender_customizationsobjectoptionalVisual customizations for the QR code as a JSON object. e.g. {"dot_pattern_color": "#EF8000", "dot_pattern_type": "rounded", "background_color": "#ffffff"}. Supports corner colors, gradient, and logo configuration.response_formatstringoptional'text' (default) or 'json'titlestringoptionalThe title of the QR codebitlymcp_create_short_link#Create a Bitly short link from a long URL. Optionally set a custom back-half (keyword), title, tags, domain, or group. Returns the short link ID for use with other tools.9 params
Create a Bitly short link from a long URL. Optionally set a custom back-half (keyword), title, tags, domain, or group. Returns the short link ID for use with other tools.
long_urlstringrequiredThe URL to be shortened. Must be a valid HTTP or HTTPS URL. Required if bitlink_id is not provided._metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.bitlink_idstringoptionalAn existing Bitly link to add a custom back-half to. Use with keyword parameter. Required if long_url is not provided.domainstringoptionalCustom short domain to use (e.g., 'bit.ly', 'custom-domain.com'). Uses group default if not specified.group_guidstringoptionalGUID of the group to create the short link in. Uses user's default group if not specified.keywordstringoptionalCustom back-half for the short link (e.g. 'summer-sale' creates 'bit.ly/summer-sale'). Must be unique. Omit for a random hash.response_formatstringoptional'text' (default) or 'json'tagsarrayoptionalArray of strings to tag the short link for organization (e.g., ['campaign', 'social-media'])titlestringoptionalCustom title for the short link to help with organization and identification.bitlymcp_create_short_link_with_qr#Create a short link and a QR code for the same URL in one step. The QR code is tied to the new short link.12 params
Create a short link and a QR code for the same URL in one step. The QR code is tied to the new short link.
group_guidstringrequiredThe unique identifier of the group (workspace)long_urlstringrequiredURL to shorten. Required unless bitlink_id is provided (same rules as create_short_link)._metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.archivedbooleanoptionalWhether the QR code should be archived (default: false).bitlink_idstringoptionalThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')domainstringoptionalCustom short domain (e.g. bit.ly).keywordstringoptionalCustom back-half for the short link.qr_titlestringoptionalTitle for the QR code; defaults to the link title when omitted.render_customizationsobjectoptionalVisual customizations for the QR code as a JSON object. e.g. {"dot_pattern_color": "#EF8000", "dot_pattern_type": "rounded", "background_color": "#ffffff"}. Supports corner colors, gradient, and logo configuration.response_formatstringoptional'text' (default) or 'json'tagsarrayoptionalTags for the short link.titlestringoptionalTitle for the short link.bitlymcp_delete_short_link#Permanently delete a non-customized short link. Cannot be undone. Analytics data is preserved.3 params
Permanently delete a non-customized short link. Cannot be undone. Analytics data is preserved.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_expand#Look up the original long URL behind any Bitly short link. Returns destination URL and creation timestamp.3 params
Look up the original long URL behind any Bitly short link. Returns destination URL and creation timestamp.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_get_custom_domains#List all custom domains (branded short domains) available to the user. These can be used instead of 'bit.ly' when creating links.2 params
List all custom domains (branded short domains) available to the user. These can be used instead of 'bit.ly' when creating links.
_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_get_custom_link_details#Get metadata and override history for a custom link (vanity URL). Use the custom_bitlink field (e.g. yourdomain.com/path).3 params
Get metadata and override history for a custom link (vanity URL). Use the custom_bitlink field (e.g. yourdomain.com/path).
custom_bitlinkstringrequiredThe short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_get_group_details#Get metadata for a specific group by GUID, including name, organization, creation date, and BSDs.3 params
Get metadata for a specific group by GUID, including name, organization, creation date, and BSDs.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_get_group_engagements_cities#Get engagement metrics (clicks + scans) for all links in a group, broken down by city. Requires a paid Bitly plan.7 params
Get engagement metrics (clicks + scans) for all links in a group, broken down by city. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_engagements_countries#Get engagement metrics (clicks + scans) for all links in a group, broken down by country. Requires a paid Bitly plan.7 params
Get engagement metrics (clicks + scans) for all links in a group, broken down by country. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_engagements_devices#Get engagement metrics (clicks + scans) for all links in a group, broken down by device type. Requires a paid Bitly plan.7 params
Get engagement metrics (clicks + scans) for all links in a group, broken down by device type. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_engagements_over_time#Get engagement metrics (clicks + scans) for all links in a group as a time series. Requires a paid Bitly plan.6 params
Get engagement metrics (clicks + scans) for all links in a group as a time series. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_engagements_referrers#Get engagement metrics for all links in a group broken down by referrer source (Facebook, Google, direct, etc.). Requires a paid Bitly plan.7 params
Get engagement metrics for all links in a group broken down by referrer source (Facebook, Google, direct, etc.). Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_engagements_referring_networks#Get engagement metrics for all links in a group broken down by referring network category. Requires a paid Bitly plan.7 params
Get engagement metrics for all links in a group broken down by referring network category. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_engagements_top#Get top-performing links in a group ranked by total engagements. Requires a paid Bitly plan.7 params
Get top-performing links in a group ranked by total engagements. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_clicks_cities#Get click metrics for all links in a group, broken down by city. Requires a paid Bitly plan.7 params
Get click metrics for all links in a group, broken down by city. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_clicks_countries#Get click metrics for all links in a group, broken down by country. Requires a paid Bitly plan.7 params
Get click metrics for all links in a group, broken down by country. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_clicks_devices#Get click metrics for all links in a group, broken down by device OS (iOS, Android, Windows, etc.). Requires a paid Bitly plan.7 params
Get click metrics for all links in a group, broken down by device OS (iOS, Android, Windows, etc.). Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_clicks_over_time#Get click metrics for all links in a group as a time series. Requires a paid Bitly plan.6 params
Get click metrics for all links in a group as a time series. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_clicks_referrers#Get click metrics for all links in a group broken down by referrer source. Requires a paid Bitly plan.7 params
Get click metrics for all links in a group broken down by referrer source. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_clicks_top#Get top-performing links in a group ranked by total clicks. Requires a paid Bitly plan.7 params
Get top-performing links in a group ranked by total clicks. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_scans_cities#Get QR scan metrics for all links in a group, broken down by city. Requires a paid Bitly plan.7 params
Get QR scan metrics for all links in a group, broken down by city. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_scans_countries#Get QR scan metrics for all links in a group, broken down by country. Requires a paid Bitly plan.7 params
Get QR scan metrics for all links in a group, broken down by country. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_scans_over_time#Get QR scan metrics for all links in a group as a time series. Requires a paid Bitly plan.6 params
Get QR scan metrics for all links in a group as a time series. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_links_scans_top#Get top-performing links in a group ranked by total QR scans. Requires a paid Bitly plan.7 params
Get top-performing links in a group ranked by total QR scans. Requires a paid Bitly plan.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_group_qr_codes#List QR codes in a group with optional search and pagination.7 params
List QR codes in a group with optional search and pagination.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.archivedstringoptionalFilter by archived status: 'on' (archived only), 'off' (non-archived only), 'both' (all)querystringoptionalSearch term to filter QR codes by title or destination URLresponse_formatstringoptional'text' (default) or 'json'search_afterstringoptionalPagination cursor for retrieving next page of resultssizestringoptionalNumber of QR codes to return (default: 50, max: 100)bitlymcp_get_group_short_links#List links in a group with optional filtering by query or date range, and pagination.9 params
List links in a group with optional filtering by query or date range, and pagination.
group_guidstringrequiredThe unique identifier of the group (workspace)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.archivedstringoptionalFilter by archived status: 'on' (archived only), 'off' (non-archived only), 'both' (all)created_afterstringoptionalFilter links created after this timestamp (ISO 8601 format)created_beforestringoptionalFilter links created before this timestamp (ISO 8601 format)querystringoptionalSearch term to filter links by title, destination URL, or short URLresponse_formatstringoptional'text' (default) or 'json'search_afterstringoptionalPagination cursor for retrieving next page of resultssizestringoptionalNumber of links to return (default: 50, max: 100)bitlymcp_get_group_short_links_sorted#List links in a group ranked by click performance. Requires sort='clicks'. Supports time-range filtering.8 params
List links in a group ranked by click performance. Requires sort='clicks'. Supports time-range filtering.
group_guidstringrequiredThe unique identifier of the group (workspace)sortstringrequiredSort method for the results. Currently supported: 'clicks' (rank by click performance)_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_groups#List all groups (workspaces) the authenticated user has access to. Groups contain links and QR codes. Use the returned group_guid with other tools.3 params
List all groups (workspaces) the authenticated user has access to. Groups contain links and QR codes. Use the returned group_guid with other tools.
_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.organization_guidstringoptionalOptional organization GUID to filter groups by specific organization. If provided, only groups belonging to this organization will be returned.response_formatstringoptional'text' (default) or 'json'bitlymcp_get_organizations#List all organizations the authenticated user belongs to, including org GUIDs, names, tier, and associated custom domains.2 params
List all organizations the authenticated user belongs to, including org GUIDs, names, tier, and associated custom domains.
_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_get_qr_code#Get metadata for a QR code by qrcode_id: destination URL, type, customizations, and creation date.3 params
Get metadata for a QR code by qrcode_id: destination URL, type, customizations, and creation date.
qrcode_idstringrequiredThe unique identifier of the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_get_qr_code_image#Get the QR code image as a base64 data URI in SVG (default) or PNG format. Note: most AI UIs cannot render raw image data.4 params
Get the QR code image as a base64 data URI in SVG (default) or PNG format. Note: most AI UIs cannot render raw image data.
qrcode_idstringrequiredThe unique identifier of the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.formatstringoptionalImage format: 'svg' or 'png' (default: svg)response_formatstringoptional'text' (default) or 'json'bitlymcp_get_qr_scan_metrics#Get QR scan metrics as a time series for a specific QR code. Requires a paid Bitly plan.6 params
Get QR scan metrics as a time series for a specific QR code. Requires a paid Bitly plan.
qrcode_idstringrequiredThe unique identifier of the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_qr_scan_summary#Get total scan count for a specific QR code over a time range. Requires a paid Bitly plan.6 params
Get total scan count for a specific QR code over a time range. Requires a paid Bitly plan.
qrcode_idstringrequiredThe unique identifier of the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_qr_scans_by_browser#Get QR scan metrics for a specific QR code broken down by browser. Requires a paid Bitly plan.7 params
Get QR scan metrics for a specific QR code broken down by browser. Requires a paid Bitly plan.
qrcode_idstringrequiredThe unique identifier of the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_qr_scans_by_city#Get QR scan metrics for a specific QR code broken down by city. Requires a paid Bitly plan.7 params
Get QR scan metrics for a specific QR code broken down by city. Requires a paid Bitly plan.
qrcode_idstringrequiredThe unique identifier of the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_qr_scans_by_country#Get QR scan metrics for a specific QR code broken down by country. Requires a paid Bitly plan.7 params
Get QR scan metrics for a specific QR code broken down by country. Requires a paid Bitly plan.
qrcode_idstringrequiredThe unique identifier of the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_qr_scans_by_device#Get QR scan metrics for a specific QR code broken down by device OS. Requires a paid Bitly plan.7 params
Get QR scan metrics for a specific QR code broken down by device OS. Requires a paid Bitly plan.
qrcode_idstringrequiredThe unique identifier of the QR code_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_get_short_link_details#Get full details for a short link: destination URL, title, tags, creation date, and archived status.3 params
Get full details for a short link: destination URL, title, tags, creation date, and archived status.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_get_user#Get the authenticated user's profile including email addresses, 2FA status, and default group GUID.2 params
Get the authenticated user's profile including email addresses, 2FA status, and default group GUID.
_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'bitlymcp_link_cities#Get click metrics for a specific short link broken down by city.7 params
Get click metrics for a specific short link broken down by city.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_link_clicks_summary#Get total click count for a specific short link over a time range. Returns aggregate clicks only, no time-series breakdown.6 params
Get total click count for a specific short link over a time range. Returns aggregate clicks only, no time-series breakdown.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_link_countries#Get click metrics for a specific short link broken down by country.7 params
Get click metrics for a specific short link broken down by country.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_link_devices#Get click metrics for a specific short link broken down by device type (mobile, desktop, tablet).7 params
Get click metrics for a specific short link broken down by device type (mobile, desktop, tablet).
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_link_engagements#Get engagement metrics (clicks + QR scans) as a time series for a specific short link.6 params
Get engagement metrics (clicks + QR scans) as a time series for a specific short link.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_link_engagements_summary#Get total engagement count (clicks + QR scans) for a specific short link. Returns aggregate only, no time-series breakdown.6 params
Get total engagement count (clicks + QR scans) for a specific short link. Returns aggregate only, no time-series breakdown.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_link_metrics#Get click metrics and time-series data for a specific short link. Returns total clicks and per-period breakdown.6 params
Get click metrics and time-series data for a specific short link. Returns total clicks and per-period breakdown.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_link_referrers#Get click metrics for a specific short link broken down by referrer source.7 params
Get click metrics for a specific short link broken down by referrer source.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_link_referring_domains#Get click metrics for a specific short link broken down by referring domain.7 params
Get click metrics for a specific short link broken down by referring domain.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.response_formatstringoptional'text' (default) or 'json'sizestringoptionalMaximum number of results to return (default varies)unitstringoptionalTime granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: dayunit_referencestringoptionalISO 8601 end timestamp for the time range. The range covers the last 'units' periods ending on this date. e.g. 2024-01-31T00:00:00+0000unitsstringoptionalNumber of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.bitlymcp_update_qr_code#Update a QR code's title, visual customizations, or archived status.6 params
Update a QR code's title, visual customizations, or archived status.
qrcode_idstringrequiredThe QR code ID to update_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.archivedbooleanoptionalWhether the QR code should be archivedrender_customizationsobjectoptionalVisual customizations for the QR code as a JSON object. e.g. {"dot_pattern_color": "#EF8000", "dot_pattern_type": "rounded", "background_color": "#ffffff"}. Supports corner colors, gradient, and logo configuration.response_formatstringoptional'text' (default) or 'json'titlestringoptionalThe new title for the QR codebitlymcp_update_short_link#Update a short link's title, tags, or archived status. Changing the destination URL requires a paid plan.7 params
Update a short link's title, tags, or archived status. Changing the destination URL requires a paid plan.
bitlink_idstringrequiredThe complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')_metaobjectoptionalOptional metadata about this request. Include user_prompt, caller_agent (e.g. claude), intent_classification, conversation_id.archivedbooleanoptionalSet to true to archive the short link, false to unarchive it. Archived links are hidden from most views but still work.long_urlstringoptionalNew destination URL to redirect the short link to. Use this to change where the short link points.response_formatstringoptional'text' (default) or 'json'tagsarrayoptionalArray of strings to replace the current tags. Pass empty array to remove all tags. Leave undefined to keep current tags.titlestringoptionalNew title for the short link. Leave empty to keep current title unchanged.