{"openapi":"3.1.0","info":{"title":"Contentful (BYOK) API","version":"0.1.0","description":"Contentful (BYOK) lets an AI assistant read your own Contentful data through the Contentful API with a key you supply (Content Delivery API access token). Read-only: 9 tools (get_space, list_content_types, get_content_type, list_locales, list_entries, get_entry, list_assets, get_asset, list_tags). The BYOK key travels with each request, is used for that one call only and is never stored, logged...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-contentful.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-contentful/docs"},"termsOfService":"https://connectorbay.com/byok-contentful/terms"},"servers":[{"url":"https://byok-contentful.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-contentful/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_space":{"post":{"operationId":"get_space","summary":"Get a space's name and its locales (code, name, default flag). Use for \"What is the name and locales of my Contentful sp","description":"Get a space's name and its locales (code, name, default flag). Use for \"What is the name and locales of my Contentful space\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"}},"required":["space_id"],"title":"get_spaceArguments","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_content_types":{"post":{"operationId":"list_content_types","summary":"List the content types (the content model) of an environment with their fields (id, name, type, required, localized) and","description":"List the content types (the content model) of an environment with their fields (id, name, type, required, localized) and display field. Use for \"What content types does my Contentful space have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID of the space; 'master' is the default environment.","maxLength":64,"title":"Environment Id","type":"string"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many items to return (1 to 1000, default 100).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Skip"}},"required":["space_id","environment_id"],"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 by id with all of its field definitions. Use for \"What fields does the Contentful content type prod","description":"Get one content type by id with all of its field definitions. Use for \"What fields does the Contentful content type product have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID of the space; 'master' is the default environment.","maxLength":64,"title":"Environment Id","type":"string"},"content_type_id":{"description":"Content type ID, for example 'product' (see list_content_types).","maxLength":64,"title":"Content Type Id","type":"string"}},"required":["space_id","environment_id","content_type_id"],"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_locales":{"post":{"operationId":"list_locales","summary":"List the locales of an environment with code, name, fallback and default flag. Use for \"Which locales are enabled in my ","description":"List the locales of an environment with code, name, fallback and default flag. Use for \"Which locales are enabled in my Contentful space\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID of the space; 'master' is the default environment.","maxLength":64,"title":"Environment Id","type":"string"}},"required":["space_id","environment_id"],"title":"list_localesArguments","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, optionally of one content type or matching a full-text search, with their fields. Select, order ","description":"List published entries, optionally of one content type or matching a full-text search, with their fields. Select, order and field filters need content_type. Max 1000 per call. Use for \"What published product entries do I have in Contentful\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID of the space; 'master' is the default environment.","maxLength":64,"title":"Environment Id","type":"string"},"content_type":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries of this content type ID, for example 'blogPost'.","title":"Content Type"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Full-text search over all text and symbol fields.","title":"Search"},"select":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated properties to return, for example 'sys.id,fields.title' (needs content_type).","title":"Select"},"order":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Sort property, for example 'sys.createdAt' or '-sys.updatedAt' (a leading minus reverses it); field sorts need content_type.","title":"Order"},"locale":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Locale code to return fields for, for example 'en-US'; use '*' for all locales. Defaults to the space default locale.","title":"Locale"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many items to return (1 to 1000, default 100).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Skip"}},"required":["space_id","environment_id"],"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 by id with its fields, content type and timestamps. Use for \"Show Contentful entry 5KsDBWseXY6Qe","description":"Get one published entry by id with its fields, content type and timestamps. Use for \"Show Contentful entry 5KsDBWseXY6QegucYAoacS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID of the space; 'master' is the default environment.","maxLength":64,"title":"Environment Id","type":"string"},"entry_id":{"description":"Entry ID, for example '5KsDBWseXY6QegucYAoacS'.","maxLength":64,"title":"Entry Id","type":"string"},"locale":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Locale code to return fields for, for example 'en-US'; use '*' for all locales. Defaults to the space default locale.","title":"Locale"}},"required":["space_id","environment_id","entry_id"],"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 (images, files) with title, description, file name, content type, size and URL. Use for \"Which ima","description":"List published assets (images, files) with title, description, file name, content type, size and URL. Use for \"Which images are in my Contentful space\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID of the space; 'master' is the default environment.","maxLength":64,"title":"Environment Id","type":"string"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Full-text search over asset titles and descriptions.","title":"Search"},"mimetype_group":{"anyOf":[{"enum":["attachment","plaintext","image","audio","video","richtext","presentation","spreadsheet","pdfdocument","archive","code","markup"],"type":"string"},{"type":"null"}],"default":null,"description":"Only assets of this kind.","title":"Mimetype Group"},"order":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Sort property, for example 'sys.createdAt' or '-sys.updatedAt'.","title":"Order"},"locale":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Locale code to return fields for, for example 'en-US'; use '*' for all locales. Defaults to the space default locale.","title":"Locale"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many items to return (1 to 1000, default 100).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Skip"}},"required":["space_id","environment_id"],"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 id: title, description and file details with URL. Use for \"Show Contentful asset wtrHxeu3zEoE","description":"Get one published asset by id: title, description and file details with URL. Use for \"Show Contentful asset wtrHxeu3zEoEce2MokCSi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID of the space; 'master' is the default environment.","maxLength":64,"title":"Environment Id","type":"string"},"asset_id":{"description":"Asset ID, for example 'wtrHxeu3zEoEce2MokCSi'.","maxLength":64,"title":"Asset Id","type":"string"},"locale":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Locale code to return fields for, for example 'en-US'; use '*' for all locales. Defaults to the space default locale.","title":"Locale"}},"required":["space_id","environment_id","asset_id"],"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_tags":{"post":{"operationId":"list_tags","summary":"List the tags defined in an environment with name, id and visibility. Use for \"Which tags exist in my Contentful space\".","description":"List the tags defined in an environment with name, id and visibility. Use for \"Which tags exist in my Contentful space\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID, a short alphanumeric code such as 'yadj1kx9rmg0' (see Settings > General in the web app).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID of the space; 'master' is the default environment.","maxLength":64,"title":"Environment Id","type":"string"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many items to return (1 to 1000, default 100).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Skip"}},"required":["space_id","environment_id"],"title":"list_tagsArguments","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}}}}