> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Presentation Renderer Protocol • AI Agent SDK

> PresentationRendererProtocol: Contract a channel presentation renderer implements.

# PresentationRendererProtocol

> Defined in the [**protocols**](../modules/protocols) module.

<Badge color="blue">AI Agent</Badge>

Contract a channel presentation renderer implements.

A renderer converts a portable :class:`MessagePresentation` into a native,
platform-specific payload (Telegram inline keyboard, Slack blocks, …). It
should run `adapt_presentation` against its own :meth:`get_limits` first
so capability-driven degradation is applied uniformly.

This protocol is the core seam that lets *any* channel — built-in or a
pip-installed plugin — register a native renderer via
`register_presentation_renderer`, mirroring how a channel already
contributes config via :class:`ChannelDescriptor`. Heavy renderer
implementations still live in `praisonai-bot`; only the contract and the
registry live in core.

## Methods

<CardGroup cols={2}>
  <Card title="get_limits()" icon="function" href="../functions/PresentationRendererProtocol-get_limits">
    Return this channel's capability limits.
  </Card>

  <Card title="render()" icon="function" href="../functions/PresentationRendererProtocol-render">
    Render *presentation* into a native, platform-specific payload.
  </Card>
</CardGroup>

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/bots/protocols.py#L1189">
  `praisonaiagents/bots/protocols.py` at line 1189
</Card>
