{"openapi":"3.1.0","info":{"title":"Placid (BYOK) API","version":"0.1.0","description":"Placid (BYOK) lets an AI assistant read your own Placid data through the Placid API with a key you supply (Placid project API token). Read-only: 9 tools (list_templates, get_template, list_collections, get_collection, list_fonts, get_font, get_image, get_pdf, get_video). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-placid.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-placid/docs"},"termsOfService":"https://connectorbay.com/byok-placid/terms"},"servers":[{"url":"https://byok-placid.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-placid/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_templates":{"post":{"operationId":"list_templates","summary":"List the templates of the Placid project (20 per page) with title, tags, thumbnail URL and dynamic layer names and types","description":"List the templates of the Placid project (20 per page) with title, tags, thumbnail URL and dynamic layer names and types. Follow links.next for more. Use for \"What Placid templates are in my project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only templates in this collection ID.","title":"Collection Id"},"title_filter":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only templates whose title matches this text.","title":"Title Filter"},"tag":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only templates with this tag (a parent tag such as 'social' also matches 'social/instagram').","title":"Tag"},"order_by":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Sort as field-direction, for example created_at-asc or title-desc (fields created_at, updated_at, title).","title":"Order By"}},"title":"list_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_template":{"post":{"operationId":"get_template","summary":"Get one Placid template: title, tags, thumbnail and the list of dynamic layers (name and type) that can be filled when g","description":"Get one Placid template: title, tags, thumbnail and the list of dynamic layers (name and type) that can be filled when generating. Use for \"What layers does this Placid template have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"template_uuid":{"description":"Placid template UUID (from list_templates).","maxLength":60,"title":"Template Uuid","type":"string"}},"required":["template_uuid"],"title":"get_templateArguments","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_collections":{"post":{"operationId":"list_collections","summary":"List the template collections of the Placid project with their title and template UUIDs. Use for \"Which Placid template ","description":"List the template collections of the Placid project with their title and template UUIDs. Use for \"Which Placid template collections do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Collections per page (1 to 100). Without it all collections are returned.","title":"Per Page"}},"title":"list_collectionsArguments","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_collection":{"post":{"operationId":"get_collection","summary":"Get one Placid template collection with its title and the UUIDs of its templates. Use for \"Which templates are in this P","description":"Get one Placid template collection with its title and the UUIDs of its templates. Use for \"Which templates are in this Placid collection\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection_id":{"description":"Placid collection ID (from list_collections).","maxLength":60,"title":"Collection Id","type":"string"}},"required":["collection_id"],"title":"get_collectionArguments","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_fonts":{"post":{"operationId":"list_fonts","summary":"List the custom fonts uploaded to the Placid project (20 per page) with the font code used as fontFamily in text layers.","description":"List the custom fonts uploaded to the Placid project (20 per page) with the font code used as fontFamily in text layers. Use for \"Which custom fonts does my Placid project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_legacy":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"Set to 1 to also list legacy account-wide fonts.","title":"Include Legacy"}},"title":"list_fontsArguments","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_font":{"post":{"operationId":"get_font","summary":"Get one custom font of the Placid project: font code, title, file name and upload time. Use for \"Show details of this Pl","description":"Get one custom font of the Placid project: font code, title, file name and upload time. Use for \"Show details of this Placid font\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uuid":{"description":"Placid font UUID (from list_fonts).","maxLength":60,"title":"Uuid","type":"string"}},"required":["uuid"],"title":"get_fontArguments","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_image":{"post":{"operationId":"get_image","summary":"Get a Placid image job by ID: status (queued, finished, error) and the URL of the generated image. Use for \"Is my Placid","description":"Get a Placid image job by ID: status (queued, finished, error) and the URL of the generated image. Use for \"Is my Placid image ready and where is it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Placid image ID (a number), as returned when it was created.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_imageArguments","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_pdf":{"post":{"operationId":"get_pdf","summary":"Get a Placid PDF job by ID: status (queued, finished, error) and the URL of the generated PDF. Use for \"Is my Placid PDF","description":"Get a Placid PDF job by ID: status (queued, finished, error) and the URL of the generated PDF. Use for \"Is my Placid PDF ready and where is it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Placid PDF ID (a number), as returned when it was created.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_pdfArguments","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_video":{"post":{"operationId":"get_video","summary":"Get a Placid video job by ID: status (queued, finished, error) and the URL of the generated video. Use for \"Is my Placid","description":"Get a Placid video job by ID: status (queued, finished, error) and the URL of the generated video. Use for \"Is my Placid video ready and where is it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Placid video ID (a number), as returned when it was created.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_videoArguments","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}}}}