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

# Agent Manifest

> Structure and usage of the Agent Manifest

The **Agent Manifest** describes essential properties of an agent, including its identity, capabilities, metadata, and runtime status. It also plays an important role in discoverability and how the ACP server advertises agents to clients.

<Note>
  During implementation, if the agent name and description are not provided, the agent's function name and docstring will be used as defaults (as they are required).
</Note>

## Example SDK Implementation

The `@server.agent` decorator is used to configure an agent's metadata when registering it with an ACP server:

```python agent.py theme={null}
@server.agent(
    name="data-analyzer",
    description="Analyzes datasets and generates insights")
async def DataAnalyzerAgent():
    """String that is used as default description if not explicitly provided in the @server.agent """
    # Agent implementation here
    yield str(response.object)

```

## Parameters

## Content Types

The `input_content_types` and `output_content_types` fields specify the MIME types that an agent can handle. Wildcards are supported.

### Common Content Types

* **`*/*`**: Any content
* **`image/*`**: Any image
* **`text/plain`**: Plain text content
* **`application/json`**: JSON structured data
* **`image/png`**: PNG image files
* **`image/jpeg`**: JPEG image files
* **`application/pdf`**: PDF documents

### Example Usage

```python theme={null}
@server.agent(
    name="image-analyzer",
    description="Analyzes images and provides text descriptions",
    input_content_types=["image/png", "image/jpeg"],
    output_content_types=["text/plain", "application/json"]
)
async def ImageAnalyzerAgent(input: list[Message], context: Context):
    # Process image inputs and return text/json outputs
    pass
```

## Default Values

If `input_content_types` and `output_content_types` are not specified in the decorator, they default to `["*/*"]`:

```python theme={null}
@server.agent()  # Uses default ["*/*"] for both input and output
async def SimpleTextAgent(input: list[Message], context: Context):
    # Agent implementation
    pass
```
