{"openapi":"3.1.0","info":{"title":"Frame io V2 Library (BYOK) API","version":"0.1.0","description":"Frame io V2 Library (BYOK) lets an AI assistant read your own Frame io V2 Library data through the Frame io V2 Library API with a key you supply (Frame.io V2 developer token). Read-only: 10 tools (get_asset, list_asset_children, search_assets, list_review_links, get_review_link, list_review_link_items, list_project_presentations, list_asset_presentations, get_presentation,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-frameio-v2-library.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-frameio-v2-library/docs"},"termsOfService":"https://connectorbay.com/byok-frameio-v2-library/terms"},"servers":[{"url":"https://byok-frameio-v2-library.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-frameio-v2-library/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_asset":{"post":{"operationId":"get_asset","summary":"Get one Frame.io asset record (file, folder or version stack): name, type, label, counts and its parent and project. The","description":"Get one Frame.io asset record (file, folder or version stack): name, type, label, counts and its parent and project. The media itself is not returned. Use for \"What is the status label of this Frame.io asset\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset_id":{"description":"Frame.io asset ID (a UUID) of a file, folder or version stack; a project's root folder ID is root_asset_id from get_project.","maxLength":60,"title":"Asset Id","type":"string"},"include_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also return a soft-deleted asset.","title":"Include Deleted"}},"required":["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_asset_children":{"post":{"operationId":"list_asset_children","summary":"List the items inside a Frame.io folder or version stack (use a project's root_asset_id to walk the folder tree), sortab","description":"List the items inside a Frame.io folder or version stack (use a project's root_asset_id to walk the folder tree), sortable by name, size, type or upload time. Use for \"What is in this Frame.io folder\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset_id":{"description":"Frame.io asset ID (a UUID) of a file, folder or version stack; a project's root folder ID is root_asset_id from get_project.","maxLength":60,"title":"Asset Id","type":"string"},"sort":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, optionally with a leading minus and chained by commas, for example name or -uploaded_at. Fields: comment_count, filesize, filetype, id, label, name, uploaded_at.","title":"Sort"},"include_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted items.","title":"Include Deleted"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Items per page.","title":"Page Size"}},"required":["asset_id"],"title":"list_asset_childrenArguments","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/search_assets":{"post":{"operationId":"search_assets","summary":"Search Frame.io assets by text, optionally within one account or project. Use for \"Find Frame.io assets named teaser\".","description":"Search Frame.io assets by text, optionally within one account or project. Use for \"Find Frame.io assets named teaser\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query_text":{"description":"Search text matched against asset names.","maxLength":200,"title":"Query Text","type":"string"},"account_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only assets of this account ID.","title":"Account Id"},"project_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only assets of this project ID.","title":"Project Id"},"sort":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Sorting parameters, for example name or -inserted_at.","title":"Sort"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Items per page.","title":"Page Size"}},"required":["query_text"],"title":"search_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/list_review_links":{"post":{"operationId":"list_review_links","summary":"List the review links of a Frame.io project with their settings (active, expiry, password protected, comments, downloads","description":"List the review links of a Frame.io project with their settings (active, expiry, password protected, comments, downloads) and item and view counts. Link URLs and passphrases are not returned. Use for \"Which review links does this Frame.io project have and are they active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Frame.io project ID (a UUID).","maxLength":60,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"list_review_linksArguments","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_review_link":{"post":{"operationId":"get_review_link","summary":"Get one Frame.io review link's settings: active flag, expiry, whether it has a passphrase, comment, download and approva","description":"Get one Frame.io review link's settings: active flag, expiry, whether it has a passphrase, comment, download and approval options and counts. Use for \"Does this Frame.io review link allow downloads\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"review_link_id":{"description":"Frame.io review link ID (a UUID), from list_review_links.","maxLength":60,"title":"Review Link Id","type":"string"}},"required":["review_link_id"],"title":"get_review_linkArguments","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_review_link_items":{"post":{"operationId":"list_review_link_items","summary":"List the assets, folders and version stacks included in one Frame.io review link (asset IDs and order). Use for \"Which i","description":"List the assets, folders and version stacks included in one Frame.io review link (asset IDs and order). Use for \"Which items are in this Frame.io review link\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"review_link_id":{"description":"Frame.io review link ID (a UUID), from list_review_links.","maxLength":60,"title":"Review Link Id","type":"string"}},"required":["review_link_id"],"title":"list_review_link_itemsArguments","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_project_presentations":{"post":{"operationId":"list_project_presentations","summary":"List the presentation links of a Frame.io project with layout, enabled flag, expiry, download option and view counts. Li","description":"List the presentation links of a Frame.io project with layout, enabled flag, expiry, download option and view counts. Link URLs and passphrases are not returned. Use for \"Which presentations exist in this Frame.io project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Frame.io project ID (a UUID).","maxLength":60,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"list_project_presentationsArguments","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_asset_presentations":{"post":{"operationId":"list_asset_presentations","summary":"List the presentation links attached to one Frame.io asset with layout, enabled flag, expiry and view counts. Use for \"I","description":"List the presentation links attached to one Frame.io asset with layout, enabled flag, expiry and view counts. Use for \"Is this Frame.io asset shared as a presentation\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset_id":{"description":"Frame.io asset ID (a UUID) of a file, folder or version stack; a project's root folder ID is root_asset_id from get_project.","maxLength":60,"title":"Asset Id","type":"string"}},"required":["asset_id"],"title":"list_asset_presentationsArguments","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_presentation":{"post":{"operationId":"get_presentation","summary":"Get one Frame.io presentation link's settings: title, layout, enabled flag, expiry, download option and counts. Use for ","description":"Get one Frame.io presentation link's settings: title, layout, enabled flag, expiry, download option and counts. Use for \"What are the settings of this Frame.io presentation\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"presentation_id":{"description":"Frame.io presentation ID (a UUID), from list_project_presentations.","maxLength":60,"title":"Presentation Id","type":"string"}},"required":["presentation_id"],"title":"get_presentationArguments","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_team_custom_actions":{"post":{"operationId":"list_team_custom_actions","summary":"List the custom actions configured for a Frame.io team (name, description, event, active flag). The action callback URLs","description":"List the custom actions configured for a Frame.io team (name, description, event, active flag). The action callback URLs are not returned. Use for \"Which custom actions does this Frame.io team have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Frame.io team ID (a UUID).","maxLength":60,"title":"Team Id","type":"string"}},"required":["team_id"],"title":"list_team_custom_actionsArguments","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}}}}