{"openapi":"3.1.0","info":{"title":"Agility CMS (BYOK) API","version":"0.1.0","description":"Agility CMS (BYOK) lets an AI assistant read your own Agility CMS data through the Agility CMS API with a key you supply (Fetch API key). Read-only: 7 tools (get_content_list, get_content_item, get_page_by_id, get_page_by_path, get_sitemap_flat, get_content_models, list_url_redirections). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached;...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-agility-cms.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-agility-cms/docs"},"termsOfService":"https://connectorbay.com/byok-agility-cms/terms"},"servers":[{"url":"https://byok-agility-cms.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-agility-cms/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/get_content_list":{"post":{"operationId":"get_content_list","summary":"Read a content list by its reference name (for example 'posts') from the published content, with each item's ID, state, ","description":"Read a content list by its reference name (for example 'posts') from the published content, with each item's ID, state, modified date and fields. Supports paging, sorting and a filter expression. Use for \"Show the published items of my Agility 'posts' list\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"api_host":{"description":"Which Agility data centre hosts your instance: api (USA), api-ca (Canada), api-eu (Europe), api-aus (Australia) or api-usa2 (USA 2). It is the same region as the Fetch API URL shown under Settings > API Keys.","enum":["api","api-ca","api-eu","api-aus","api-usa2"],"title":"Api Host","type":"string"},"instance_guid":{"description":"Your Agility instance GUID, shown under Settings > API Keys, for example '4582b5fa-u'. The ending letters tell which region hosts it.","maxLength":200,"title":"Instance Guid","type":"string"},"locale":{"description":"Locale code of the content, for example 'en-us'.","maxLength":200,"title":"Locale","type":"string"},"reference_name":{"description":"Reference name of the content list, all lowercase, for example 'posts'.","maxLength":200,"title":"Reference Name","type":"string"},"take":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 250).","title":"Take"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Skip"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Field to sort by, for example 'fields.title' or 'properties.modified'.","title":"Sort"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc.","title":"Direction"},"filter":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Filter expression, for example fields.title[eq]\"Hello\". Operators: eq, ne, lt, lte, gt, gte, contains, in, like; join with and / or.","title":"Filter"},"fields":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated field names to return; leave out for all fields.","title":"Fields"},"content_link_depth":{"anyOf":[{"maximum":5,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"How many levels of linked content to resolve (0 to 5). Higher values make the answer much larger.","title":"Content Link Depth"},"expand_all_content_links":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to expand all linked content, including lists and grids, in place of reference names.","title":"Expand All Content Links"}},"required":["api_host","instance_guid","locale","reference_name"],"title":"get_content_listArguments","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_content_item":{"post":{"operationId":"get_content_item","summary":"Read one published content item by its numeric content ID, with state, modified date, fields and SEO data. Use for \"Show","description":"Read one published content item by its numeric content ID, with state, modified date, fields and SEO data. Use for \"Show Agility content item 124\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"api_host":{"description":"Which Agility data centre hosts your instance: api (USA), api-ca (Canada), api-eu (Europe), api-aus (Australia) or api-usa2 (USA 2). It is the same region as the Fetch API URL shown under Settings > API Keys.","enum":["api","api-ca","api-eu","api-aus","api-usa2"],"title":"Api Host","type":"string"},"instance_guid":{"description":"Your Agility instance GUID, shown under Settings > API Keys, for example '4582b5fa-u'. The ending letters tell which region hosts it.","maxLength":200,"title":"Instance Guid","type":"string"},"locale":{"description":"Locale code of the content, for example 'en-us'.","maxLength":200,"title":"Locale","type":"string"},"content_id":{"description":"Numeric content ID of the item, for example 124.","title":"Content Id","type":"integer"},"content_link_depth":{"anyOf":[{"maximum":5,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"How many levels of linked content to resolve (0 to 5). Higher values make the answer much larger.","title":"Content Link Depth"},"expand_all_content_links":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to expand all linked content, including lists and grids, in place of reference names.","title":"Expand All Content Links"}},"required":["api_host","instance_guid","locale","content_id"],"title":"get_content_itemArguments","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_by_id":{"post":{"operationId":"get_page_by_id","summary":"Read one published page by its numeric page ID, including its content zones and the modules placed in them. Use for \"Sho","description":"Read one published page by its numeric page ID, including its content zones and the modules placed in them. Use for \"Show Agility page 5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"api_host":{"description":"Which Agility data centre hosts your instance: api (USA), api-ca (Canada), api-eu (Europe), api-aus (Australia) or api-usa2 (USA 2). It is the same region as the Fetch API URL shown under Settings > API Keys.","enum":["api","api-ca","api-eu","api-aus","api-usa2"],"title":"Api Host","type":"string"},"instance_guid":{"description":"Your Agility instance GUID, shown under Settings > API Keys, for example '4582b5fa-u'. The ending letters tell which region hosts it.","maxLength":200,"title":"Instance Guid","type":"string"},"locale":{"description":"Locale code of the content, for example 'en-us'.","maxLength":200,"title":"Locale","type":"string"},"page_id":{"description":"Numeric page ID, for example 5.","title":"Page Id","type":"integer"},"content_link_depth":{"anyOf":[{"maximum":5,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"How many levels of linked content to resolve (0 to 5). Higher values make the answer much larger.","title":"Content Link Depth"},"expand_all_content_links":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to expand all linked content, including lists and grids, in place of reference names.","title":"Expand All Content Links"}},"required":["api_host","instance_guid","locale","page_id"],"title":"get_page_by_idArguments","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_by_path":{"post":{"operationId":"get_page_by_path","summary":"Read one published page by its path in a digital channel (for example '/about-us' in 'website'), including its content z","description":"Read one published page by its path in a digital channel (for example '/about-us' in 'website'), including its content zones and modules. Use for \"Show the Agility page at /about-us\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"api_host":{"description":"Which Agility data centre hosts your instance: api (USA), api-ca (Canada), api-eu (Europe), api-aus (Australia) or api-usa2 (USA 2). It is the same region as the Fetch API URL shown under Settings > API Keys.","enum":["api","api-ca","api-eu","api-aus","api-usa2"],"title":"Api Host","type":"string"},"instance_guid":{"description":"Your Agility instance GUID, shown under Settings > API Keys, for example '4582b5fa-u'. The ending letters tell which region hosts it.","maxLength":200,"title":"Instance Guid","type":"string"},"locale":{"description":"Locale code of the content, for example 'en-us'.","maxLength":200,"title":"Locale","type":"string"},"channel_name":{"description":"Reference name of the digital channel; usually 'website' when there is only one.","maxLength":200,"title":"Channel Name","type":"string"},"path":{"description":"Page path starting with a slash, for example '/about-us'.","maxLength":300,"title":"Path","type":"string"},"content_link_depth":{"anyOf":[{"maximum":5,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"How many levels of linked content to resolve (0 to 5). Higher values make the answer much larger.","title":"Content Link Depth"},"expand_all_content_links":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to expand all linked content, including lists and grids, in place of reference names.","title":"Expand All Content Links"}},"required":["api_host","instance_guid","locale","channel_name","path"],"title":"get_page_by_pathArguments","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_sitemap_flat":{"post":{"operationId":"get_sitemap_flat","summary":"Read the flat sitemap of a digital channel: every published page keyed by its path. Use for \"List the pages of my Agilit","description":"Read the flat sitemap of a digital channel: every published page keyed by its path. Use for \"List the pages of my Agility website by path\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"api_host":{"description":"Which Agility data centre hosts your instance: api (USA), api-ca (Canada), api-eu (Europe), api-aus (Australia) or api-usa2 (USA 2). It is the same region as the Fetch API URL shown under Settings > API Keys.","enum":["api","api-ca","api-eu","api-aus","api-usa2"],"title":"Api Host","type":"string"},"instance_guid":{"description":"Your Agility instance GUID, shown under Settings > API Keys, for example '4582b5fa-u'. The ending letters tell which region hosts it.","maxLength":200,"title":"Instance Guid","type":"string"},"locale":{"description":"Locale code of the content, for example 'en-us'.","maxLength":200,"title":"Locale","type":"string"},"channel_name":{"description":"Reference name of the digital channel; usually 'website' when there is only one.","maxLength":200,"title":"Channel Name","type":"string"}},"required":["api_host","instance_guid","locale","channel_name"],"title":"get_sitemap_flatArguments","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_content_models":{"post":{"operationId":"get_content_models","summary":"List the content models and page modules defined in the instance (the shape of each content type). Optionally only those","description":"List the content models and page modules defined in the instance (the shape of each content type). Optionally only those changed since a date. Use for \"What content models does my Agility instance define\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"api_host":{"description":"Which Agility data centre hosts your instance: api (USA), api-ca (Canada), api-eu (Europe), api-aus (Australia) or api-usa2 (USA 2). It is the same region as the Fetch API URL shown under Settings > API Keys.","enum":["api","api-ca","api-eu","api-aus","api-usa2"],"title":"Api Host","type":"string"},"instance_guid":{"description":"Your Agility instance GUID, shown under Settings > API Keys, for example '4582b5fa-u'. The ending letters tell which region hosts it.","maxLength":200,"title":"Instance Guid","type":"string"},"last_modified_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only models changed after this date and time, for example 2026-01-01T00:00:00Z.","title":"Last Modified Date"}},"required":["api_host","instance_guid"],"title":"get_content_modelsArguments","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_url_redirections":{"post":{"operationId":"list_url_redirections","summary":"List the URL redirections defined in the instance, optionally only those changed since a date. Use for \"What URL redirec","description":"List the URL redirections defined in the instance, optionally only those changed since a date. Use for \"What URL redirects does my Agility site have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"api_host":{"description":"Which Agility data centre hosts your instance: api (USA), api-ca (Canada), api-eu (Europe), api-aus (Australia) or api-usa2 (USA 2). It is the same region as the Fetch API URL shown under Settings > API Keys.","enum":["api","api-ca","api-eu","api-aus","api-usa2"],"title":"Api Host","type":"string"},"instance_guid":{"description":"Your Agility instance GUID, shown under Settings > API Keys, for example '4582b5fa-u'. The ending letters tell which region hosts it.","maxLength":200,"title":"Instance Guid","type":"string"},"last_access_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only redirections changed after this date and time, for example 2026-01-01T00:00:00Z.","title":"Last Access Date"}},"required":["api_host","instance_guid"],"title":"list_url_redirectionsArguments","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}}}}