# list_websites (/docs/mcp/tools/list-websites)

{/* Generated by scripts/sync-mcp-tools.mjs from happierleads-api. Do not edit: change src/routes/mcp/toolDocs.json there, or add content/mcp-notes/list_websites.mdx. */}

**List websites** · Read-only

Lists the account's tracked websites, newest first, with _id (the websiteId other tools need), name, url, domain, clientId, status (unverified, verified, removed or failed), trial and credit fields, tags and tracking settings. Returns \{ websites, pagination: \{ total, page, limit, totalPages, hasNext, hasPrev \} \}. Default 50 per page, max 100. Start here to find a websiteId. For the install snippet use get_tracking_pixel; for full settings use get_website. Needs an account-level key.

| Connection | Account-owner URL or OAuth (not a team member URL) |
| --- | --- |

## Parameters [#parameters]

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `page` | `number` | No | Page number, starting at 1 (default 1). |
| `limit` | `number` | No | Websites per page (default 50, max 100). |
| `search` | `string` | No | Optional text matched (case-insensitive) against domain, url and name. |

## Tool definition [#tool-definition]

What your assistant receives from `tools/list`:

```json
{
  "name": "list_websites",
  "title": "List websites",
  "annotations": {
    "title": "List websites",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "inputSchema": {
    "type": "object",
    "properties": {
      "page": {
        "type": "number",
        "description": "Page number, starting at 1 (default 1)."
      },
      "limit": {
        "type": "number",
        "description": "Websites per page (default 50, max 100)."
      },
      "search": {
        "type": "string",
        "description": "Optional text matched (case-insensitive) against domain, url and name."
      }
    }
  }
}
```
