{"openapi":"3.1.0","info":{"title":"v0 (BYOK) API","version":"0.1.0","description":"v0 (BYOK) lets an AI assistant read your own v0 data through the v0 API with a key you supply (v0 API key). Read-only: 7 tools (list_chats, get_chat, list_chat_messages, get_chat_files, list_mcp_servers, list_webhooks, get_trusted_preview_hosts). 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 sent to api.v0.dev....\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-v0-platform.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-v0-platform/docs"},"termsOfService":"https://connectorbay.com/byok-v0-platform/terms"},"servers":[{"url":"https://byok-v0-platform.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-v0-platform/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_chats":{"post":{"operationId":"list_chats","summary":"List v0 chats you can access (generated apps) with title, privacy, author, linked Vercel project and metadata; filter by","description":"List v0 chats you can access (generated apps) with title, privacy, author, linked Vercel project and metadata; filter by author, project or metadata. Use for \"Which v0 chats do I have, newest first\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from the previous answer.","title":"Cursor"},"author_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only chats created by this user id.","title":"Author Id"},"vercel_project_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only chats linked to this Vercel project id.","title":"Vercel Project Id"}},"title":"list_chatsArguments","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_chat":{"post":{"operationId":"get_chat","summary":"Get one v0 chat: title, privacy, author, linked Vercel project, metadata and write permission. Use for \"Show v0 chat cha","description":"Get one v0 chat: title, privacy, author, linked Vercel project, metadata and write permission. Use for \"Show v0 chat chat_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chat_id":{"description":"Id of the v0 chat, for example 'chat_abc123', from list_chats.","maxLength":200,"title":"Chat Id","type":"string"}},"required":["chat_id"],"title":"get_chatArguments","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_chat_messages":{"post":{"operationId":"list_chat_messages","summary":"List the messages of a chat, newest first, with role, closing text and timestamps. Use for \"What did v0 answer last in c","description":"List the messages of a chat, newest first, with role, closing text and timestamps. Use for \"What did v0 answer last in chat chat_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chat_id":{"description":"Id of the v0 chat, for example 'chat_abc123', from list_chats.","maxLength":200,"title":"Chat Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from the previous answer.","title":"Cursor"}},"required":["chat_id"],"title":"list_chat_messagesArguments","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_chat_files":{"post":{"operationId":"get_chat_files","summary":"Get the source files generated in a chat (path and content). Can be large. Use for \"Show the files v0 generated in chat ","description":"Get the source files generated in a chat (path and content). Can be large. Use for \"Show the files v0 generated in chat chat_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chat_id":{"description":"Id of the v0 chat, for example 'chat_abc123', from list_chats.","maxLength":200,"title":"Chat Id","type":"string"}},"required":["chat_id"],"title":"get_chat_filesArguments","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_mcp_servers":{"post":{"operationId":"list_mcp_servers","summary":"List the MCP servers configured for your v0 account with name, enabled flag, auth type and scope (the server URL is not ","description":"List the MCP servers configured for your v0 account with name, enabled flag, auth type and scope (the server URL is not shown). Use for \"Which MCP servers is v0 set up to use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_mcp_serversArguments","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_webhooks":{"post":{"operationId":"list_webhooks","summary":"List the webhooks configured in your v0 workspace (id and name). Use for \"Which webhooks are set up in my v0 workspace\".","description":"List the webhooks configured in your v0 workspace (id and name). Use for \"Which webhooks are set up in my v0 workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_webhooksArguments","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_trusted_preview_hosts":{"post":{"operationId":"get_trusted_preview_hosts","summary":"Get the hostname patterns that may embed v0 previews for your team. Use for \"Which hosts may embed v0 previews\".","description":"Get the hostname patterns that may embed v0 previews for your team. Use for \"Which hosts may embed v0 previews\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_trusted_preview_hostsArguments","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}}}}