> ## 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.

# Platform Capabilities • AI Agent SDK

> PlatformCapabilities: Platform-specific capabilities descriptor for bot adapters.

# PlatformCapabilities

> Defined in the [**protocols**](https://praison.ai/docs/sdk/reference/praisonaiagents/modules/protocols.md) module.

AI Agent

Platform-specific capabilities descriptor for bot adapters.

Declares what a messaging platform can do, enabling the shared delivery
machinery to apply features like streaming, rate limiting, and chunking
uniformly across all platforms.

Attributes:
max\_message\_length: Maximum message length in the platform's unit
length\_unit: Unit for message length ("codepoints" or "utf16")
supports\_edit: Whether the platform supports in-place message edits (for streaming)
supports\_delete: Whether the platform supports deleting a sent message.
When True the adapter MUST override `delete_message`; the
capability contract is verified at adapter build time so a
declared-but-unbacked flag fails early rather than silently
no-opping mid-turn.
supports\_typing: Whether the platform supports typing indicators
markdown\_dialect: Markdown flavor the platform uses (e.g., "markdown", "telegram\_markdown\_v2")
needs\_rate\_limit: Whether the platform needs rate limiting
edit\_interval\_ms: Minimum milliseconds between message edits (for streaming)
max\_files\_per\_message: Maximum number of file attachments per message
max\_file\_size\_mb: Maximum file size in megabytes
supported\_file\_types: List of supported file extensions/mime types
accepts\_webhooks: Whether the platform delivers inbound messages via webhook
verifies\_webhook\_signature: Whether the adapter verifies inbound webhook
authenticity. Adapters that accept webhooks MUST set this True and
expose a `webhook_verifier` so central ingress can enforce it
fail-closed.
reconciles\_unknown\_send: Whether the adapter can confirm whether a prior
send attempt actually landed (e.g. via a provider message-status
lookup keyed on the idempotency key). When True the durable outbox
reconciles an in-flight (`sending`) entry on restart before
re-dispatch, upgrading delivery from at-least-once to
effectively-once. When False, delivery remains at-least-once and a
crash mid-send may re-send the message.
supports\_media: Whether the adapter can attach/upload media files on
outbound sends (photos, documents). When False, the gateway's
delivery router degrades gracefully and reports media as not
attached rather than silently dropping it.
supports\_idempotency\_token: Whether the transport accepts a
provider-level idempotency token so the platform itself
de-duplicates a retried send. This is an informational capability
descriptor only; the durable outbox does not forward a token on
resend, so adapters relying on provider-side dedupe should also set
`reconciles_unknown_send` to get effectively-once delivery.
supports\_threads: Whether the adapter can open a new thread/topic under
a chat (e.g. Telegram forum topics, Discord threads, Slack thread
anchoring). When False, `create_thread` returns a typed
`unsupported` outcome and callers fall back to the parent channel
rather than raising.
supports\_status\_text: Whether the adapter can render a short,
replaceable textual status line (e.g. "🔍 Searching the web...")
without editing a message or adding reactions. When True the
adapter SHOULD implement `async set_status_text(channel_id, text)`
(an empty `text` clears the line when the turn ends); streaming `auto`/`progress` on a non-edit channel then routes the
curated activity line there instead of degrading to `off`.

## Properties

**max\_message\_length** `int`

No description available.

**length\_unit** `str`

No description available.

**supports\_edit** `bool`

No description available.

**supports\_typing** `bool`

No description available.

**markdown\_dialect** `str`

No description available.

**needs\_rate\_limit** `bool`

No description available.

**edit\_interval\_ms** `int`

No description available.

**max\_files\_per\_message** `int`

No description available.

**max\_file\_size\_mb** `int`

No description available.

**supported\_file\_types** `List[str]`

No description available.

**accepts\_webhooks** `bool`

No description available.

**verifies\_webhook\_signature** `bool`

No description available.

**reconciles\_unknown\_send** `bool`

No description available.

**supports\_idempotency\_token** `bool`

No description available.

**supports\_media** `bool`

No description available.

**supports\_threads** `bool`

No description available.

**supports\_delete** `bool`

No description available.

**supports\_status\_text** `bool`

No description available.

> [accordion] Internal & Generic Methods
>
> * **from\_dict**: Create from dictionary.
> * **to\_dict**: Convert to dictionary.

## Source

> [card] [View on GitHub](https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/bots/protocols.py#L74)
>
> `praisonaiagents/bots/protocols.py` at line 74


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.