{"openapi":"3.1.0","info":{"title":"Contentful Management (BYOK) API","version":"0.1.0","description":"Contentful Management (BYOK) lets an AI assistant read your own Contentful Management data through the Contentful Management API with a key you supply (content management personal access token). Read-only: 11 tools (list_spaces, get_space, list_environments, list_content_types, get_content_type, list_entries, get_entry, list_assets, get_asset, list_locales, list_tags). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-contentful-management.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-contentful-management/docs"},"termsOfService":"https://connectorbay.com/byok-contentful-management/terms"},"servers":[{"url":"https://byok-contentful-management.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-contentful-management/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_spaces":{"post":{"operationId":"list_spaces","summary":"List the Contentful spaces the token can access with ID, name, organization and dates. Use for \"Which Contentful spaces ","description":"List the Contentful spaces the token can access with ID, name, organization and dates. Use for \"Which Contentful spaces can I manage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100, default 25).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Skip"}},"title":"list_spacesArguments","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_space":{"post":{"operationId":"get_space","summary":"Get one space: name, organization and dates. Use for \"What is the name of Contentful space yadj1kx9rmg0\".","description":"Get one space: name, organization and dates. Use for \"What is the name of Contentful space yadj1kx9rmg0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID (a short alphanumeric code, see list_spaces).","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_environments":{"post":{"operationId":"list_environments","summary":"List the environments of a space (master and sandboxes) with ID, name and aliases. Use for \"Which environments does my C","description":"List the environments of a space (master and sandboxes) with ID, name and aliases. Use for \"Which environments 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, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100, default 25).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Skip"}},"required":["space_id"],"title":"list_environmentsArguments","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 name, description, display field and field definitions","description":"List the content types (the content model) of an environment with name, description, display field and field definitions. Use for \"What content types are defined in my Contentful space\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID (a short alphanumeric code, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID within the space, usually 'master'.","maxLength":64,"title":"Environment Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100, default 25).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Skip"},"order":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, optionally prefixed with - for descending, for example name or sys.createdAt.","title":"Order"}},"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 with its field definitions (IDs, names, types, required and localized flags). Use for \"What fields ","description":"Get one content type with its field definitions (IDs, names, types, required and localized flags). Use for \"What fields does the Contentful content type blogPost have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID (a short alphanumeric code, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID within the space, usually 'master'.","maxLength":64,"title":"Environment Id","type":"string"},"content_type_id":{"description":"Content type ID from list_content_types, for example blogPost.","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_entries":{"post":{"operationId":"list_entries","summary":"List entries of an environment (draft and published) with their fields. Filter by content type and order; fields are key","description":"List entries of an environment (draft and published) with their fields. Filter by content type and order; fields are keyed by field ID then locale. Use for \"List my latest Contentful blog post entries\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID (a short alphanumeric code, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID within the space, usually 'master'.","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.","title":"Content Type"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Full-text search text over the entries.","title":"Query"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100, default 25).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Skip"},"order":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, optionally prefixed with - for descending, for example -sys.updatedAt.","title":"Order"}},"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 entry by ID with its fields, version and published version. Use for \"Show Contentful entry e1\".","description":"Get one entry by ID with its fields, version and published version. Use for \"Show Contentful entry e1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID (a short alphanumeric code, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID within the space, usually 'master'.","maxLength":64,"title":"Environment Id","type":"string"},"entry_id":{"description":"Entry ID from list_entries.","maxLength":64,"title":"Entry Id","type":"string"}},"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 assets (images, videos, documents) with title, description, file name, content type and URL per locale. Use for \"Wh","description":"List assets (images, videos, documents) with title, description, file name, content type and URL per locale. Use for \"Which images are in my Contentful media library\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID (a short alphanumeric code, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID within the space, usually 'master'.","maxLength":64,"title":"Environment Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100, default 25).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Skip"},"order":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, optionally prefixed with - for descending, for example -sys.updatedAt.","title":"Order"}},"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 asset by ID with its title, description and file details per locale. Use for \"Show Contentful asset a1\".","description":"Get one asset by ID with its title, description and file details per locale. Use for \"Show Contentful asset a1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID (a short alphanumeric code, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID within the space, usually 'master'.","maxLength":64,"title":"Environment Id","type":"string"},"asset_id":{"description":"Asset ID from list_assets.","maxLength":64,"title":"Asset Id","type":"string"}},"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_locales":{"post":{"operationId":"list_locales","summary":"List the locales of an environment with code, name, fallback code, default flag and delivery or management availability.","description":"List the locales of an environment with code, name, fallback code, default flag and delivery or management availability. 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, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID within the space, usually 'master'.","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_tags":{"post":{"operationId":"list_tags","summary":"List the content tags of an environment with ID, name and visibility. Use for \"Which tags are used in my Contentful spac","description":"List the content tags of an environment with ID, name and visibility. Use for \"Which tags are used in my Contentful space\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_id":{"description":"Contentful space ID (a short alphanumeric code, see list_spaces).","maxLength":40,"title":"Space Id","type":"string"},"environment_id":{"description":"Environment ID within the space, usually 'master'.","maxLength":64,"title":"Environment Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100, default 25).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Skip"},"name_match":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only tags whose name contains this text.","title":"Name Match"}},"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}}}}