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

Example SDK Implementation

The @server.agent decorator is used to configure an agent’s metadata when registering it with an ACP server:
agent.py
@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

@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 ["*/*"]:
@server.agent()  # Uses default ["*/*"] for both input and output
async def SimpleTextAgent(input: list[Message], context: Context):
    # Agent implementation
    pass

The schema is of type object.