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

# List Sites

> Browse the agent-friendly site directory

## Overview

Returns a paginated list of live, public agent-friendly sites. Each site has been crawled and analyzed to extract structured components (contact info, pricing, docs, FAQs, etc.) that AI agents can consume directly.

No authentication required.

## Query Parameters

<ParamField query="search" type="string">
  Filter sites by keyword in name or description
</ParamField>

<ParamField query="category" type="string">
  Filter by category (e.g., `productivity`, `development`, `finance`)
</ParamField>

<ParamField query="sort" type="string">
  Sort order (e.g., `newest`, `popular`)
</ParamField>

<ParamField query="limit" type="integer" default="20">
  Maximum number of sites to return (max 100)
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Number of sites to skip for pagination
</ParamField>

## Response

<ResponseField name="sites" type="array">
  Array of site summary objects

  <Expandable title="Site object">
    <ResponseField name="id" type="string">
      Unique site identifier
    </ResponseField>

    <ResponseField name="domain" type="string">
      Site domain (e.g., `stripe.com`)
    </ResponseField>

    <ResponseField name="url" type="string">
      Full URL that was crawled
    </ResponseField>

    <ResponseField name="status" type="string">
      Site status (always `live` in directory)
    </ResponseField>

    <ResponseField name="page_title" type="string">
      Page title from crawl
    </ResponseField>

    <ResponseField name="page_description" type="string">
      Page meta description
    </ResponseField>

    <ResponseField name="favicon_url" type="string">
      Favicon URL
    </ResponseField>

    <ResponseField name="component_count" type="integer">
      Number of extracted components
    </ResponseField>

    <ResponseField name="tool_count" type="integer">
      Number of discovered tools
    </ResponseField>

    <ResponseField name="category" type="string">
      Site category
    </ResponseField>

    <ResponseField name="tags" type="array">
      Site tags
    </ResponseField>

    <ResponseField name="created_at" type="string">
      ISO 8601 timestamp
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="total" type="integer">
  Total number of matching sites (for pagination)
</ResponseField>

## Example

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.danubeai.com/v1/agent-sites/directory?category=finance&limit=10"
  ```

  ```python Python SDK theme={null}
  from danube import DanubeClient

  with DanubeClient(api_key="dk_...") as client:
      sites = client.sites.search(category="finance")
      for site in sites:
          print(f"{site.domain} - {site.component_count} components")
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "sites": [
      {
        "id": "site_abc123",
        "domain": "stripe.com",
        "url": "https://stripe.com",
        "status": "live",
        "page_title": "Stripe | Payment Processing Platform",
        "page_description": "Online payment processing for internet businesses",
        "favicon_url": "https://stripe.com/favicon.ico",
        "component_count": 6,
        "tool_count": 3,
        "category": "finance",
        "tags": ["payments", "api"],
        "created_at": "2026-01-10T08:00:00Z"
      }
    ],
    "total": 1
  }
  ```
</ResponseExample>

## MCP Tool

This endpoint is also available as the `search_sites` MCP tool:

```python theme={null}
result = await mcp.call_tool("search_sites", {
    "category": "finance",
    "limit": 10
})
```
