{"openapi":"3.1.0","info":{"title":"Bitly Pages (BYOK) API","version":"0.1.0","description":"Bitly Pages (BYOK) lets an AI assistant read your own Bitly Pages data through the Bitly Pages API with a key you supply (Bitly access token). Read-only: 11 tools (list_group_pages, get_page, list_page_templates, get_pages_overview, get_pages_views_over_time, get_pages_views_by_country, get_top_page_buttons, get_page_views_summary, get_page_views_by_country, get_page_views_by_referrer,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-bitly-pages.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-bitly-pages/docs"},"termsOfService":"https://connectorbay.com/byok-bitly-pages/terms"},"servers":[{"url":"https://byok-bitly-pages.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-bitly-pages/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_group_pages":{"post":{"operationId":"list_group_pages","summary":"List the Bitly Pages of a group with status, public URL, title, description, button count, publish and edit dates and QR","description":"List the Bitly Pages of a group with status, public URL, title, description, button count, publish and edit dates and QR code id. Pass search_after from the previous answer's pagination for the next page. Use for \"Which link-in-bio pages do I have in Bitly\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_guid":{"description":"Bitly group GUID, from the bitly connector's list_groups.","maxLength":64,"title":"Group Guid","type":"string"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many pages to return (default 50).","title":"Size"},"search_after":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token copied from the previous answer's pagination.search_after.","title":"Search After"}},"required":["group_guid"],"title":"list_group_pagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_page":{"post":{"operationId":"get_page","summary":"Get one Bitly Page: status, public URL, title, description, button count, dates and QR code id. Button contents are left","description":"Get one Bitly Page: status, public URL, title, description, button count, dates and QR code id. Button contents are left out. Use for \"Show the details of my Bitly link-in-bio page\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Bitly Page (site) GUID, from list_group_pages.","maxLength":64,"title":"Site Id","type":"string"}},"required":["site_id"],"title":"get_pageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_page_templates":{"post":{"operationId":"list_page_templates","summary":"List the Bitly Page templates, optionally for one category, with template id, name and description. Use for \"Which Bitly","description":"List the Bitly Page templates, optionally for one category, with template id, name and description. Use for \"Which Bitly Page templates exist for digital business cards\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"enum":["Link-in-bio","Products and services","Promotions","Digital business card","Image gallery","Recommended"],"type":"string"},{"type":"null"}],"default":null,"description":"Template category.","title":"Category"}},"title":"list_page_templatesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_pages_overview":{"post":{"operationId":"get_pages_overview","summary":"Get total views and button clicks across all Bitly Pages for a period. Use for \"How many views and clicks did my Bitly P","description":"Get total views and button clicks across all Bitly Pages for a period. Use for \"How many views and clicks did my Bitly Pages get last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit for the period: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":100000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units back to include; -1 (default) means all time.","title":"Units"},"unit_reference":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time that ends the period, for example 2026-10-01T00:00:00+0000; default now.","title":"Unit Reference"}},"title":"get_pages_overviewArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_pages_views_over_time":{"post":{"operationId":"get_pages_views_over_time","summary":"Get Bitly Page views over time for all pages; each entry has a date and a count. Use for \"How did my Bitly Page views ch","description":"Get Bitly Page views over time for all pages; each entry has a date and a count. Use for \"How did my Bitly Page views change over the last weeks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit for the period: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":100000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units back to include; -1 (default) means all time.","title":"Units"},"unit_reference":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time that ends the period, for example 2026-10-01T00:00:00+0000; default now.","title":"Unit Reference"}},"title":"get_pages_views_over_timeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_pages_views_by_country":{"post":{"operationId":"get_pages_views_by_country","summary":"Get Bitly Page views grouped by visitor country for all pages in a period. Use for \"Which countries view my Bitly Pages ","description":"Get Bitly Page views grouped by visitor country for all pages in a period. Use for \"Which countries view my Bitly Pages most\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit for the period: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":100000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units back to include; -1 (default) means all time.","title":"Units"},"unit_reference":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time that ends the period, for example 2026-10-01T00:00:00+0000; default now.","title":"Unit Reference"}},"title":"get_pages_views_by_countryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_top_page_buttons":{"post":{"operationId":"get_top_page_buttons","summary":"Get the best performing Bitly Page buttons by clicks, with button titles and types, plus page view counts. Use for \"Whic","description":"Get the best performing Bitly Page buttons by clicks, with button titles and types, plus page view counts. Use for \"Which buttons on my Bitly Pages get the most clicks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit for the period: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":100000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units back to include; -1 (default) means all time.","title":"Units"},"unit_reference":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time that ends the period, for example 2026-10-01T00:00:00+0000; default now.","title":"Unit Reference"}},"title":"get_top_page_buttonsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_page_views_summary":{"post":{"operationId":"get_page_views_summary","summary":"Get the total view count of one Bitly Page for a period. Use for \"How many times was my Bitly Page viewed this week\".","description":"Get the total view count of one Bitly Page for a period. Use for \"How many times was my Bitly Page viewed this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Bitly Page (site) GUID, from list_group_pages.","maxLength":64,"title":"Site Id","type":"string"},"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit for the period: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":100000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units back to include; -1 (default) means all time.","title":"Units"},"unit_reference":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time that ends the period, for example 2026-10-01T00:00:00+0000; default now.","title":"Unit Reference"}},"required":["site_id"],"title":"get_page_views_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_page_views_by_country":{"post":{"operationId":"get_page_views_by_country","summary":"Get views of one Bitly Page grouped by visitor country. Use for \"Where do the visitors of my Bitly Page come from\".","description":"Get views of one Bitly Page grouped by visitor country. Use for \"Where do the visitors of my Bitly Page come from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Bitly Page (site) GUID, from list_group_pages.","maxLength":64,"title":"Site Id","type":"string"},"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit for the period: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":100000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units back to include; -1 (default) means all time.","title":"Units"},"unit_reference":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time that ends the period, for example 2026-10-01T00:00:00+0000; default now.","title":"Unit Reference"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many rows to return (default 50).","title":"Size"}},"required":["site_id"],"title":"get_page_views_by_countryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_page_views_by_referrer":{"post":{"operationId":"get_page_views_by_referrer","summary":"Get views of one Bitly Page grouped by referrer. Use for \"Which sites send visitors to my Bitly Page\".","description":"Get views of one Bitly Page grouped by referrer. Use for \"Which sites send visitors to my Bitly Page\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Bitly Page (site) GUID, from list_group_pages.","maxLength":64,"title":"Site Id","type":"string"},"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit for the period: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":100000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units back to include; -1 (default) means all time.","title":"Units"},"unit_reference":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time that ends the period, for example 2026-10-01T00:00:00+0000; default now.","title":"Unit Reference"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many rows to return (default 50).","title":"Size"}},"required":["site_id"],"title":"get_page_views_by_referrerArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_page_link_performance":{"post":{"operationId":"get_page_link_performance","summary":"Get clicks on the Bitlinks placed on one Bitly Page, with link title, destination and click count. Use for \"Which links ","description":"Get clicks on the Bitlinks placed on one Bitly Page, with link title, destination and click count. Use for \"Which links on my Bitly Page get clicked\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Bitly Page (site) GUID, from list_group_pages.","maxLength":64,"title":"Site Id","type":"string"},"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit for the period: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":100000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units back to include; -1 (default) means all time.","title":"Units"},"unit_reference":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time that ends the period, for example 2026-10-01T00:00:00+0000; default now.","title":"Unit Reference"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many rows to return (default 50).","title":"Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Result page number, starting at 1.","title":"Page"}},"required":["site_id"],"title":"get_page_link_performanceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}