MCP server
The PlentyLabs MCP server allows AI clients to work with your data in the same way as you would through the app.
Server
Server URL
https://mcp.plentylabs.com/mcp- Transport: streamable HTTP. Every message is a JSON-RPC
POSTto the server URL. - Sessions: none. Each request stands alone and responses are JSON.
- Authentication: OAuth 2.1. API keys are not accepted.
- Tools and prompts: the client lists them after connecting. They cover boards, the asset library, Brand kits and image, video and audio generation. Clients that support MCP Apps also get tools that open views in the chat.
Connect
Add the server as a remote HTTP server, then sign in.
Client configuration
{
"mcpServers": {
"com.plentylabs/mcp": {
"type": "http",
"url": "https://mcp.plentylabs.com/mcp"
}
}
}Sign-in
- The client calls the server without a token and gets
401with aWWW-Authenticateheader. - The header points to the protected resource metadata at
https://mcp.plentylabs.com/.well-known/oauth-protected-resource/mcp, which names the authorization server. - The client reads the authorization server's metadata and registers itself with dynamic client registration.
- The person signs in to PlentyLabs and approves the client. The client gets an access token with PKCE.
- The client sends the token as
Authorization: Beareron every request, and refreshes it when it expires.
The client has the signed-in person's access in every workspace they belong to. ListMyWorkspaces returns their workspace ids.
Limits and errors
GenerateImage,GenerateVideoandEditImagetake 1 to 12 entries per call.- A request body can be at most 10 MB.
- Tools spend the signed-in person's request and complexity budgets and the same credits as the app. Generation tools share the workspace's generation limits, and
ImportImageFromUrlandRefinePrompthave their own per-person limits, as do tools that open a view in the chat. - A tool that fails returns
isError: true; its text holds the GraphQL response with the API's error codes.GenerateImage,GenerateVideoandEditImagesetisErroronly when no entry succeeded, and list each failed entry's message by index. - A request with no valid token gets
401. An unsupportedMCP-Protocol-Versiongets400with JSON-RPC error-32022listing the supported versions.initializenegotiates the version instead. - A request that takes longer than 15 seconds gets
408.GETandDELETEget405.