{"openapi":"3.1.0","info":{"title":"Contentstack (BYOK) API","version":"0.1.0","description":"Contentstack (BYOK) lets an AI assistant read your own Contentstack data through the Contentstack API with a key you supply (stack API key). Read-only: 9 tools (list_content_types, get_content_type, list_entries, get_entry, list_assets, get_asset, list_global_fields, list_taxonomies, list_taxonomy_terms). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-contentstack.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-contentstack/docs"},"termsOfService":"https://connectorbay.com/byok-contentstack/terms"},"servers":[{"url":"https://byok-contentstack.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-contentstack/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_content_types":{"post":{"operationId":"list_content_types","summary":"List the content types (schemas) of the stack with title, UID, description and dates. Returns at most 100 per request. U","description":"List the content types (schemas) of the stack with title, UID, description and dates. Returns at most 100 per request. Use for \"What content types does my Contentstack stack have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to also return the total number of content types.","title":"Include Count"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (the API returns at most 100 per request).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"}},"title":"list_content_typesArguments","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_type":{"post":{"operationId":"get_content_type","summary":"Get one content type including its field schema. Use for \"Which fields does the blog_post content type have in Contentst","description":"Get one content type including its field schema. Use for \"Which fields does the blog_post content type have in Contentstack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"content_type_uid":{"description":"UID of the content type, for example 'blog_post'.","maxLength":200,"title":"Content Type Uid","type":"string"}},"required":["content_type_uid"],"title":"get_content_typeArguments","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_entries":{"post":{"operationId":"list_entries","summary":"List published entries of one content type; entry fields beyond the common ones are not listed (use get_entry). Supports","description":"List published entries of one content type; entry fields beyond the common ones are not listed (use get_entry). Supports a JSON query and sorting. Use for \"Which published blog posts do I have in Contentstack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"content_type_uid":{"description":"UID of the content type, for example 'blog_post'.","maxLength":200,"title":"Content Type Uid","type":"string"},"environment":{"description":"Publishing environment name that the delivery token is scoped to, for example 'production'.","maxLength":200,"title":"Environment","type":"string"},"locale":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Locale code such as 'en-us'. Without it the master locale is used.","title":"Locale"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (the API returns at most 100 per request).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Optional JSON filter, for example {\"title\":\"Hello world\"}.","title":"Query"},"asc":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Field UID to sort ascending by, for example updated_at.","title":"Asc"},"desc":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Field UID to sort descending by, for example updated_at.","title":"Desc"},"include_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to also return the total number of matching entries.","title":"Include Count"}},"required":["content_type_uid","environment"],"title":"list_entriesArguments","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_entry":{"post":{"operationId":"get_entry","summary":"Get one published entry with all its fields. Use for \"Show the Contentstack entry blt1234567890abcdef of blog_post\".","description":"Get one published entry with all its fields. Use for \"Show the Contentstack entry blt1234567890abcdef of blog_post\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"content_type_uid":{"description":"UID of the content type, for example 'blog_post'.","maxLength":200,"title":"Content Type Uid","type":"string"},"entry_uid":{"description":"UID of the entry, for example blt1234567890abcdef.","maxLength":200,"title":"Entry Uid","type":"string"},"environment":{"description":"Publishing environment name that the delivery token is scoped to, for example 'production'.","maxLength":200,"title":"Environment","type":"string"},"locale":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Locale code such as 'en-us'. Without it the master locale is used.","title":"Locale"}},"required":["content_type_uid","entry_uid","environment"],"title":"get_entryArguments","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_assets":{"post":{"operationId":"list_assets","summary":"List published assets (files and images) with title, file name, type, size and URL. Use for \"Which images are published ","description":"List published assets (files and images) with title, file name, type, size and URL. Use for \"Which images are published in my Contentstack stack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"environment":{"description":"Publishing environment name that the delivery token is scoped to, for example 'production'.","maxLength":200,"title":"Environment","type":"string"},"locale":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Locale code such as 'en-us'. Without it the master locale is used.","title":"Locale"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (the API returns at most 100 per request).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Optional JSON filter, for example {\"content_type\":\"image/png\"}.","title":"Query"},"include_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to also return the total number of matching assets.","title":"Include Count"}},"required":["environment"],"title":"list_assetsArguments","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_asset":{"post":{"operationId":"get_asset","summary":"Get one published asset by UID. Use for \"Show Contentstack asset bltabcdef1234567890\".","description":"Get one published asset by UID. Use for \"Show Contentstack asset bltabcdef1234567890\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset_uid":{"description":"UID of the asset, for example bltabcdef1234567890.","maxLength":200,"title":"Asset Uid","type":"string"},"environment":{"description":"Publishing environment name that the delivery token is scoped to, for example 'production'.","maxLength":200,"title":"Environment","type":"string"}},"required":["asset_uid","environment"],"title":"get_assetArguments","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_global_fields":{"post":{"operationId":"list_global_fields","summary":"List the reusable global fields of the stack with title, UID and dates. Use for \"Which global fields exist in Contentsta","description":"List the reusable global fields of the stack with title, UID and dates. Use for \"Which global fields exist in Contentstack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_global_field_schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include each global field's schema.","title":"Include Global Field Schema"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (the API returns at most 100 per request).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"}},"title":"list_global_fieldsArguments","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_taxonomies":{"post":{"operationId":"list_taxonomies","summary":"List published taxonomies with name, UID and number of terms. Use for \"What taxonomies are published in Contentstack\".","description":"List published taxonomies with name, UID and number of terms. Use for \"What taxonomies are published in Contentstack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"environment":{"description":"Publishing environment name that the delivery token is scoped to, for example 'production'.","maxLength":200,"title":"Environment","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (the API returns at most 100 per request).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"}},"required":["environment"],"title":"list_taxonomiesArguments","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_taxonomy_terms":{"post":{"operationId":"list_taxonomy_terms","summary":"List published terms of one taxonomy with name, UID, depth and child count. Use for \"Which terms are in the regions taxo","description":"List published terms of one taxonomy with name, UID, depth and child count. Use for \"Which terms are in the regions taxonomy in Contentstack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"taxonomy_uid":{"description":"UID of the taxonomy, for example 'regions'.","maxLength":200,"title":"Taxonomy Uid","type":"string"},"environment":{"description":"Publishing environment name that the delivery token is scoped to, for example 'production'.","maxLength":200,"title":"Environment","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (the API returns at most 100 per request).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"}},"required":["taxonomy_uid","environment"],"title":"list_taxonomy_termsArguments","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}}}}