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

# Capability Descriptor • AI Agent SDK

> CapabilityDescriptor: A capability profile a relay connector attests at handshake time.

# CapabilityDescriptor

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

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

A capability profile a relay connector attests at handshake time.

Where :class:`~praisonaiagents.bots.presentation.PlatformCapabilities`
declares capabilities *statically* in core, this descriptor is negotiated
by a remote connector at connect time so the streaming/delivery layer can
adapt to the actual platform the connector is fronting.

Attributes:
max\_message\_length: Maximum outbound message length the platform
accepts before the connector must split/truncate.
length\_unit: How `max_message_length` is measured — `"chars"`
(Unicode code points) or `"utf16"` (UTF-16 code units, as some
platforms count).
supports\_edit: Whether the platform supports editing a sent message
(enables draft-streaming via in-place edits).
supports\_draft\_streaming: Whether the connector can stream partial
drafts (incremental updates) for a single turn.
markdown\_dialect: Markdown flavour the platform renders
(e.g. `"none"`, `"markdown"`, `"markdownv2"`, `"html"`).

## Properties

<ResponseField name="max_message_length" type="int">
  No description available.
</ResponseField>

<ResponseField name="length_unit" type="str">
  No description available.
</ResponseField>

<ResponseField name="supports_edit" type="bool">
  No description available.
</ResponseField>

<ResponseField name="supports_draft_streaming" type="bool">
  No description available.
</ResponseField>

<ResponseField name="markdown_dialect" type="str">
  No description available.
</ResponseField>

## Methods

<CardGroup cols={2}>
  <Card title="as_dict()" icon="function" href="../functions/CapabilityDescriptor-as_dict">
    Convert to a serializable dictionary (for the handshake wire).
  </Card>
</CardGroup>

<Accordion title="Internal & Generic Methods">
  * **from\_dict**: Reconstruct a descriptor from its serialized form.
</Accordion>

## Source

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