MCP Tools Reference
A concise, skimmable catalog of Bitly MCP tools.
Link Management
bitly_create_short_link - Create a compact, shareable link with advanced customization options
Parameters:
long_url (optional; required if bitlink_id not provided)
bitlink_id (optional; existing short link to add a custom back-half to)
domain (optional)
group_guid (optional)
title (optional)
tags (optional; string[])
keyword (optional; custom back-half for the short link)
dynamic_routing (optional; object[]; up to 10 rules; send visitors to different destinations by country, region, device, or OS)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Shorten https://example.com/very-long-product-page-url"
"Create a short link for https://example.com/spring-sale titled 'Spring Sale 2024' tagged 'marketing' and 'seasonal' using our custom domain"
"Create a custom short link bit.ly/summer-sale for https://example.com/sale"
bitly_create_short_link_with_qr - Create a short link and a QR Code that encodes it in a single step (one approval covers both)
Parameters:
group_guid (required)
bitlink_id (optional; existing short link to encode; required if long_url not provided)
long_url (optional; required if bitlink_id not provided)
domain (optional)
title (optional; used for the short link)
tags (optional; string[])
keyword (optional; custom back-half for the short link)
dynamic_routing (optional; object[]; up to 10 rules; applied to the short link)
qr_title (optional; defaults to the link title when omitted)
archived (optional; boolean)
render_customizations (optional; object; QR appearance)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Create a short link and matching QR Code for https://example.com/event in my marketing group"
"Make bit.ly/summer-sale for https://example.com/sale and generate a QR Code titled 'Summer Sale Flyer'"
bitly_get_short_link_details - Get complete short link details (title, destination, created, creator, tags, custom domains)
Parameters:
bitlink_id (required; the short link in 'domain/hash' form, e.g. 'bit.ly/ABC123')
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show me the full details for bit.ly/ABC123"
bitly_update_short_link - Update destination URL, title, archive state, tags, or dynamic routing rules
Parameters:
bitlink_id (required; the short link in 'domain/hash' form, e.g. 'bit.ly/ABC123')
long_url (optional)
title (optional)
archived (optional; boolean)
tags (optional; string[])
dynamic_routing (optional; object[]; up to 10 rules; replaces all existing rules, pass [] to remove them)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Archive bit.ly/ABC123"
"Update bit.ly/ABC123 with title 'Updated Campaign Link' and tags 'Q1-2024' and 'email-campaign'"
"Change the destination of bit.ly/ABC123 to https://example.com/new-page"
bitly_delete_short_link - Permanently delete a short link (unedited links only)
Parameters:
bitlink_id (required; the short link in 'domain/hash' form, e.g. 'bit.ly/ABC123')
response_format (optional; "text" (default) or "json")
Usage Examples:
"Delete bit.ly/ABC123 permanently"
bitly_get_link_destination - Look up where a short link points: its destination long URL plus basic metadata (works for any bitlink, including links you do not own)
Parameters:
bitlink_id (required; the short link in 'domain/hash' form, e.g. 'bit.ly/ABC123')
response_format (optional; "text" (default) or "json")
Usage Examples:
"What URL does bit.ly/ABC123 point to?"
Analytics
Analytics are served by three tools, one per subject. Each takes a dimension that selects the report: a facet breakdown (e.g. countries, cities, devices) or over_time (a time series). The single-link and QR Code tools also offer summary (totals); group analytics instead offers top (best-performing links) and has no group-level summary — for an overall group count, total the over_time series.
bitly_get_link_analytics - Analytics for a single short link
over_time and summary report click counts; engagements and engagements_summary report the same time ranges with a clicks/scans/button-clicks breakdown.
agentic_traffic breaks down clicks from AI agents and assistants (ChatGPT, Claude, ...) by agent. These are counted separately from clicks, so they are not a subset of the click totals.
Parameters:
bitlink_id (required; the short link in 'domain/hash' form, e.g. 'bit.ly/ABC123')
dimension (required; countries | cities | devices | referrers | referring_domains | over_time | summary | engagements | engagements_summary | agentic_traffic)
unit (optional; minute | hour | day | week | month)
units (optional; number of periods; default 30)
unit_reference (optional; ISO timestamp ending the range)
size (optional; number)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Which countries clicked bit.ly/ABC123 in the last 7 days?"
"Show me metrics over time for bit.ly/ABC123"
"How many total engagements has bit.ly/ABC123 received?"
"Which AI agents have been visiting bit.ly/ABC123?"
bitly_get_group_analytics - Analytics across all links in a group (workspace)
Takes a dataset selecting what to measure. Valid dimensions depend on the dataset:
| Dataset | Dimensions |
|---|---|
| agentic_traffic | summary |
| clicks | countries, cities, device_os, referrers, over_time, top |
| engagements | countries, cities, devices, referrers, referring_networks, over_time, top |
| qr_scans | countries, cities, over_time, top |
devices is device form factor (mobile, desktop, ...); device_os is operating system (iOS, Android, Windows, ...).
agentic_traffic counts clicks from AI agents and assistants. It always returns a fixed 90-day total and ignores unit, units, and unit_reference.
Parameters:
group_guid (required)
dataset (required; agentic_traffic | clicks | engagements | qr_scans)
dimension (required; countries | cities | devices | device_os | referrers | referring_networks | over_time | summary | top; see matrix above)
unit (optional; minute | hour | day | week | month)
units (optional; number of periods; default 30)
unit_reference (optional; ISO timestamp ending the range)
size (optional; number)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Break down my group's QR scans by city"
"What are my top performing links this week?"
"How have my group's clicks trended over the last 30 days?"
"How much of my traffic came from AI agents?"
bitly_get_qr_code_analytics - Scan analytics for a single QR Code
Parameters:
qrcode_id (required)
dimension (required; countries | cities | device_os | browsers | over_time | summary)
unit (optional; minute | hour | day | week | month)
units (optional; number of periods; default 30)
unit_reference (optional; ISO timestamp ending the range)
size (optional; number)
response_format (optional; "text" (default) or "json")
Usage Examples:
"What operating systems scanned QR Code QR123456?"
"How many total scans does QR Code QR123456 have?"
QR Codes
bitly_create_qr_code - Create a new QR Code for a link
Parameters:
group_guid (required)
title (optional)
long_url (optional; destination to encode; required if bitlink_id not provided)
bitlink_id (optional; existing short link to encode; required if long_url not provided)
domain (optional)
archived (optional; boolean)
render_customizations (optional; object; foreground/background colors, gradients, frame, dot pattern)
expiration_at (optional; ISO 8601 "YYYY-MM-DDTHH:MM:SS+0000"; long_url-backed QR Codes only, on entitled accounts)
dynamic_routing (optional; object[]; up to 10 rules; decoupled (long_url-backed) QR Codes only)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Create a QR Code for bit.ly/ABC123 called 'Event Registration'"
"Create a QR Code for bit.ly/ABC123 titled 'Event Registration' in my marketing group"
"Create a QR Code for bit.ly/ABC123 with a blue foreground and white background"
bitly_get_qr_code - Get QR Code metadata
Parameters:
qrcode_id (required)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show details for QR Code QR123456"
bitly_get_qr_code_image - Return a QR Code's image as a base64 data URI (not a URL). Most agent UIs cannot render raw image data, so to view or download the image prefer the QR Code details page returned by bitly_get_qr_code and bitly_create_qr_code.
Parameters:
qrcode_id (required)
format (optional; svg | png; default "svg")
response_format (optional; "text" (default) or "json")
Usage Examples:
"Get the raw image data for QR Code QR123456 as a PNG"
bitly_update_qr_code - Update a QR Code's title, customizations, expiration, archived status, or dynamic routing rules
Parameters:
qrcode_id (required)
title (optional)
archived (optional; boolean)
render_customizations (optional; object; foreground/background colors, gradients, frame, dot pattern)
expiration_at (optional; ISO 8601 "YYYY-MM-DDTHH:MM:SS+0000"; pass "" to remove an existing expiration)
dynamic_routing (optional; object[]; up to 10 rules; decoupled (long_url-backed) QR Codes only)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Update QR Code QR123456 with title 'Updated Event QR' and archive it"
"Recolor QR Code QR123456 with a red foreground"
bitly_get_group_qr_codes - List QR Codes in a group with filtering and pagination
Parameters:
group_guid (required)
query (optional; search term)
archived (optional; on | off | both)
size (optional; results per page)
search_after (optional; pagination cursor from the previous response)
has_dynamic_routing (optional; on | off | both; filter to QR Codes with or without routing rules)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show QR Codes in group Bg123def456 that contain 'event'"
User & Organization
bitly_get_user - Get the authenticated user's profile
Parameters:
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show my user profile"
bitly_get_organizations - List organizations the user can access
Parameters:
response_format (optional; "text" (default) or "json")
Usage Examples:
"List all organizations I can access"
bitly_get_groups - List groups (workspaces); optionally filter by organization
Parameters:
organization_guid (optional)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show all my groups"
bitly_get_group_details - Get a group's details, including its custom domains
Parameters:
group_guid (required)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Get details for group Bg123def456"
bitly_get_group_preferences - Get a group's preferences, including the default domain used when creating links for the group
Parameters:
group_guid (required)
response_format (optional; "text" (default) or "json")
Usage Examples:
"What is the default domain for group Bg123def456?"
"Show the preferences for my marketing group"
bitly_get_group_short_links - List links in a group with rich filtering
Parameters:
group_guid (required)
size (optional; results per page)
search_after (optional; pagination cursor from the previous response)
query (optional; search term)
tag (optional; string[]; links must carry every tag listed (AND))
created_before (optional; Unix timestamp)
created_after (optional; Unix timestamp)
archived (optional; on | off | both)
has_dynamic_routing (optional; on | off | both; filter to links with or without routing rules)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show links in group Bg123def456"
"Get the first 20 links in group Bg123def456 tagged 'campaign' created after 2024-01-01 (exclude archived)"
bitly_get_group_short_links_sorted - List group links sorted by performance
Parameters:
group_guid (required)
sort (required; clicks)
unit (optional; minute | hour | day | week | month)
units (optional; number of periods)
unit_reference (optional; ISO timestamp ending the range)
size (optional; number)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show top-performing links in group Bg123def456 by clicks over the last 30 days"
Custom Domains
bitly_get_custom_domains - List custom domains available to the user
Parameters:
response_format (optional; "text" (default) or "json")
Usage Examples:
"What custom domains can I use for shortening links?"
bitly_get_custom_link_details - Get custom link metadata and override history
Parameters:
custom_bitlink (required; a custom-keyword link, e.g. 'example.ly/spring-sale')
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show details for example.ly/spring-sale"
Bulk Uploads
bitly_bulk_upload_validate - Validate a bulk upload request and obtain a signed URL for uploading a .CSV or .XLSX file
Parameters:
filename (required)
upload_type (required; "link", "qr_code", or "coupled_link")
group_guid (optional)
domain (optional)
template_id (optional; required for "qr_code" and "coupled_link"; "QTDTmplWLogo" or "QTDTmplNLogo")
response_format (optional; "text" (default) or "json")
Usage Examples:
"Bulk upload links.csv into group Bg123def456"
"Bulk create QR Codes from qr-batch.xlsx using the no-logo template"
bitly_bulk_upload_file - Upload a file to the signed URL returned by bitly_bulk_upload_validate
Parameters:
upload_url (required; signed URL from the validate step)
headers (required; object; headers from the validate step)
file_content (required)
content_type (optional)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Upload the validated bulk file to complete the bulk request"
Data Export
bitly_export_data - Export link or QR data as a CSV, returned inline as a downloadable file
Parameters:
group_guid (required)
export_type (required; "link_engagements_timeseries", "link_engagements_batch", "links_list", or "qr_codes_list")
bitlinks (optional; string[]; fully qualified bitlinks; for the engagement exports)
unix_from_date (optional; "YYYY-MM-DD" UTC; required for "link_engagements_timeseries")
unix_to_date (optional; "YYYY-MM-DD" UTC)
include_metrics (optional; boolean; for "links_list" and "qr_codes_list" only)
filter (optional; object; required for "links_list" and "qr_codes_list")
response_format (optional; "text" (default) or "json")
Usage Examples:
"Export a CSV of all links in group Bg123def456"
"Export daily click totals for bit.ly/ABC123 over the last 30 days"
Bitly Sites
Bitly Sites are link-in-bio landing pages (microsites) reachable at a short URL. Newly created sites and edits are drafts until published with bitly_publish_site. Site analytics are served by a single bitly_get_site_analytics tool that takes a dataset and a dimension.
bitly_create_site - Create a new, empty Bitly Site (link-in-bio page) for a group at a short URL
The new site is a draft with no blocks. Add content with bitly_create_site_block, style it with bitly_update_site_appearance, then publish it with bitly_publish_site.
Parameters:
group_guid (required)
uri (required; keyword ('mysite'), 'domain/keyword', or full 'domain/m/keyword'; '/m/' is added automatically and a bare keyword assumes bit.ly)
display_name (optional; defaults to a system value when omitted)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Create a Bitly Site at bit.ly/mysite in group Bg123def456"
bitly_get_site - Get a Bitly Site's configuration: URL, status, display name, description, button count, and attached QR Code
Parameters:
site_id (required)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Show the details for site M1234567890"
bitly_get_group_sites - List the Bitly Sites in a group with URL filtering and pagination
Parameters:
group_guid (required)
sites_url_param (optional; filter by URL substring)
size (optional; results per page (default 50, max 100))
search_after (optional; pagination cursor from the previous response)
response_format (optional; "text" (default) or "json")
Usage Examples:
"List the Bitly Sites in group Bg123def456"
bitly_update_site - Update a Bitly Site's URI, display name, description, or attach a QR Code
Only the fields you send change; a present empty string ("") clears display_name/description. Changing the URI creates a redirect from the old one.
Parameters:
site_id (required)
uri (optional; keyword ('mysite'), 'domain/keyword', or full 'domain/m/keyword'; '/m/' is added automatically and a bare keyword assumes bit.ly)
display_name (optional; pass "" to clear it)
description (optional; pass "" to clear it)
qr_code_id (optional; attach a QR Code created with bitly\_create\_qr\_code; the site must not already have one)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Rename site M1234567890's display name to 'My Links'"
"Attach QR Code QR123456 to site M1234567890"
bitly_delete_site - Deactivate (delete) a Bitly Site, taking the live site down
Parameters:
site_id (required)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Delete Bitly Site M1234567890"
bitly_publish_site - Publish a Bitly Site's draft so the current edits go live
Parameters:
site_id (required)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Publish site M1234567890"
bitly_discard_site_draft - Discard a Bitly Site's unpublished draft, reverting to the published version
Parameters:
site_id (required)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Discard the unpublished draft for site M1234567890"
bitly_clone_site - Clone a live Bitly Site into a new draft at a different URI
Parameters:
site_id (required)
uri (required; keyword, 'domain/keyword', or full 'domain/m/keyword' (must differ from the source); '/m/' is added automatically and a bare keyword assumes bit.ly)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Clone site M1234567890 to bit.ly/mysite-copy"
bitly_get_site_templates - List Bitly Site templates that can be applied to a site, optionally filtered by category
Parameters:
category (optional; e.g. 'Link-in-bio', 'Digital business card', 'Image gallery')
response_format (optional; "text" (default) or "json")
Usage Examples:
"List the available Bitly Site templates"
bitly_apply_site_template - Apply a template's content, appearance, and blocks to a Bitly Site
Parameters:
site_id (required)
template_guid (required; from bitly\_get\_site\_templates)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Apply template Mt123456 to site M1234567890"
bitly_update_site_appearance - Replace a Bitly Site's appearance: theme, layout, fonts, and colors
This is a full replacement (PUT) of the appearance object, so include every field you want set. Fetch the current values with bitly_get_site (response_format "json") first.
Parameters:
site_id (required)
appearance (required; object; theme_id, layout, font, colors, header_appearance, etc.)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Set site M1234567890's background color to #000000 and text color to #FFFFFF"
bitly_create_site_container - Create a container (grid or carousel) on a Bitly Site to group content blocks
Parameters:
site_id (required)
type (required; grid | carousel)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Add a carousel to site M1234567890"
bitly_create_site_block - Add a content block to a Bitly Site: a bitlink button, social icon, YouTube video, image, digital business card, or text block
For a YouTube block, resolve the video with bitly_prevalidate_site_button first. To nest the block, create a container with bitly_create_site_container and pass its ID as parent.
Parameters:
site_id (required)
content_type (required; bitlink | social | youtubeVideo | image | digital_business_card | text_block; block type; grid/carousel containers are created with bitly\_create\_site\_container)
content (required; object; shape depends on content_type)
appearance (optional; object; text_block only)
schedule_start (optional; RFC 3339 timestamp)
schedule_end (optional; RFC 3339 timestamp)
is_active (optional; defaults to true (visible) when omitted)
is_pinned (optional)
parent (optional; container block ID to nest inside)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Add a bitlink button linking to bit.ly/ABC123 titled 'Shop now' to site M1234567890"
bitly_update_site_block - Update an existing content block on a Bitly Site, replacing its content (and text-block appearance)
The block type is taken from the stored block and cannot be changed. Fetch the block's ID with bitly_get_site.
Parameters:
site_id (required)
block_id (required; ID of the block to update; find it with bitly\_get\_site)
content (required; object; shape depends on the block's type)
appearance (optional; object; text_block only)
schedule_start (optional; RFC 3339 timestamp)
schedule_end (optional; RFC 3339 timestamp)
is_active (optional)
is_pinned (optional)
parent (optional; container block ID to nest inside)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Update the text of text block L123456 on site M1234567890"
bitly_delete_site_block - Delete a block of any type from a Bitly Site: a bitlink button, social icon, YouTube video, image, digital business card, text block, or a grid/carousel container
Fetch the block's ID with bitly_get_site.
Parameters:
site_id (required)
block_id (required; ID of the block to delete; find it with bitly\_get\_site)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Delete block L123456 from site M1234567890"
bitly_prevalidate_site_button - Prevalidate button content (a YouTube video) before adding it to a Bitly Site
Returns the resolved video URL, title, and thumbnail to use when creating a youtubeVideo content block with bitly_create_site_block.
Parameters:
site_id (required)
button_type (required; youtubeVideo)
video_id (required; the YouTube video ID to resolve)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Prevalidate YouTube video dQw4w9WgXcQ for site M1234567890"
bitly_create_site_image - Register an already-uploaded image for use on a Bitly Site
Parameters:
site_id (required)
image_guid (required; GUID of the previously uploaded image)
url (required; URL of the uploaded image)
image_use (required; how the image is used (avatar, background, etc.))
crop (optional; JSON-encoded crop rectangle)
response_format (optional; "text" (default) or "json")
Usage Examples:
"Register uploaded image Img123 as the avatar for site M1234567890"
bitly_delete_site_redirect - Delete a redirect from a Bitly Site
Redirects are created automatically when a site's URI changes (see bitly_update_site); this removes one, identified by its old domain and keyword.
Parameters:
site_id (required)
domain (required; the redirect's domain, e.g. 'bit.ly')
keyword (required; the redirect's keyword (path after the domain))
response_format (optional; "text" (default) or "json")
Usage Examples:
"Delete the redirect bit.ly/old-uri from site M1234567890"
bitly_get_site_analytics - Analytics for a single Bitly Site
Takes a dataset selecting what to measure. Valid dimensions depend on the dataset: page_views (countries, cities, devices, referrers, over_time, summary); button_clicks (countries, cities, devices, over_time, top); dbc_downloads (over_time); overview (summary); link_performance (summary).
Parameters:
site_id (required)
dataset (required; button_clicks | dbc_downloads | link_performance | overview | page_views)
dimension (required; countries | cities | devices | referrers | over_time | summary | top)
unit (optional; minute | hour | day | week | month)
units (optional; number of periods; default 30)
unit_reference (optional; ISO timestamp ending the range)
size (optional; number)
response_format (optional; "text" (default) or "json")
Usage Examples:
"How many page views did site M1234567890 get in the last 7 days?"
"Which countries viewed site M1234567890?"
"What are the top-performing buttons on site M1234567890?"