{"name":"Playset","description":"Creative technology for advertisers, brands, creators, and small businesses.","version":"1.0.0","mcp":{"endpoint":"https://api.playset.co/mcp","transport":"streamable-http","oauth":{"authorization_server":"https://api.playset.co/.well-known/oauth-authorization-server","protected_resource":"https://api.playset.co/.well-known/oauth-protected-resource","dynamic_registration":"https://api.playset.co/mcp/register","pkce_required":true,"token_lifetime_days":30},"session":{"ttl_seconds":3600,"max_per_user":10,"cross_node":true,"on_session_moved":"Reinitialize the session via POST /mcp. The original session id is invalid."},"rate_limits":{"tool_calls_per_minute":120,"session_inits_per_minute":20},"tools":[{"name":"list_interactives","mutation":false,"description":"List interactives on a channel or campaign."},{"name":"get_interactive","mutation":false,"description":"Get an interactive by ID."},{"name":"create_interactive","mutation":true,"description":"Create an interactive from HTML code."},{"name":"update_interactive","mutation":true,"description":"Update an interactive's name and/or code."},{"name":"delete_interactive","mutation":true,"description":"Delete an interactive (requires confirm:true)."},{"name":"list_media","mutation":false,"description":"List media available to the caller."}],"errors":{"shape":{"code":"string — machine-readable error class","message":"string — safe summary","retryable":"boolean","retry_after_ms":"number (when applicable)","recovery":"enum: reauth | refresh_token | wait_and_retry | reduce_rate | check_input | reinit_session | contact_support","requestId":"string — log correlation id"},"codes":["NOT_AUTHENTICATED","FORBIDDEN","NOT_FOUND","INVALID_INPUT","SUBSCRIPTION_REQUIRED","CONFLICT","RATE_LIMITED","UPSTREAM_TIMEOUT","INTERNAL_ERROR","SESSION_MOVED"]}},"health":"https://api.playset.co/healthz","llms_txt":"https://playset.co/llms.txt","contact":"https://playset.co/"}