# Houzz Pro API and MCP server

> Houzz Pro has no public API for leads, projects, estimates or invoices (checked 11 Oct 2026). Its only connection for this data is the Zapier app, which offers two actions, Create Lead and Create Project, and no triggers.

Business software from Houzz for contractors, remodelers and interior designers: leads, projects, estimates, invoices, tasks and time tracking in one account.

## What is the Houzz Pro API?

Cotlet's Houzz Pro API exposes 14 endpoints for your own Houzz Pro account: list leads, get lead, list projects, list tasks, list estimates, list invoices, create lead, update lead stage, convert lead to project, create task, log time, create estimate, create invoice and send document. The list_leads endpoint returns leads with stage, client, location, project type, source, tags and last activity. Each endpoint takes simple JSON inputs like project_id, stage or lead_id and works both as an MCP tool for agents and as a REST call for scripts.

- **Category:** [Local services & SaaS](https://cotlet.dev/integrations/category/local-services-saas)
- **Endpoints:** 14 (6 read, 8 write)
- **Updated:** 2026-10-11

Houzz Pro has no public API for leads, projects, estimates or invoices (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Houzz Pro with 14 endpoints (6 read, 8 write): your AI agent signs in as you and does the work.

## Does Houzz Pro have an official API?

Houzz Pro has no public API for leads, projects, estimates or invoices (checked 11 Oct 2026). Its only connection for this data is the Zapier app, which offers two actions, Create Lead and Create Project, and no triggers.

| Task | Houzz Pro official | Cotlet |
|---|---|---|
| Create leads | Partly: Zapier Create Lead action, select packages only | Yes |
| Create projects | Partly: Zapier Create Project action | Yes |
| Read and search leads and projects | No | Yes |
| Move leads between stages | No | Yes |
| Convert a lead to a project | No | Yes |
| Create and send estimates | No | Yes |
| Invoice from an estimate | No | Yes |
| Log time on a project | No | Yes |

Sources: [Houzz Pro: How to integrate Zapier](https://pro.houzz.com/pro-help/r/how-to-integrate-zapier-with-houzz-pro), [Houzz Pro: How to import your leads](https://pro.houzz.com/pro-help/r/how-to-import-your-leads), [Houzz Pro: How to use automations on documents](https://pro.houzz.com/pro-help/r/how-to-use-automations-on-documents), [Houzz Pro: How to log and manage time](https://pro.houzz.com/pro-help/r/how-to-log-and-manage-time), [Houzz Pro: How to import time entries](https://pro.houzz.com/pro-help/r/how-to-import-time-entries), [Houzz Pro integrations](https://pro.houzz.com/for-pros/integrations), [Houzz Pro on Zapier](https://zapier.com/apps/houzz-pro/integrations)

## For AI agents

```text
Houzz Pro has no public API for leads, projects, estimates or invoices (checked 11 Oct 2026). Its only connection for this data is the Zapier app, which offers two actions, Create Lead and Create Project, and no triggers.
Cotlet provides a hosted MCP server and REST API for Houzz Pro: 14 tools (6 read, 8 write).
Access       Request access at https://cotlet.dev/app/signup?app=houzz-pro; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/houzz-pro
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_leads, get_lead, list_projects, list_tasks, list_estimates, list_invoices, create_lead, update_lead_stage, convert_lead_to_project, create_task, log_time, create_estimate, create_invoice, send_document
Confirm      convert_lead_to_project, send_document (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/houzz-pro-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=houzz-pro (Houzz Pro is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Houzz Pro once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Houzz Pro server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Houzz Pro in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Houzz Pro's terms; Cotlet is not affiliated with Houzz Pro.
```

## What can an AI agent do in Houzz Pro?

Cotlet is best for contractors, remodelers and designers who use Houzz Pro and want their AI agent to handle leads, estimates, invoices and time entries without running or fixing a server.

- **Import leads from a spreadsheet** (runs: weekly): "Add every row of leads.csv as a new Houzz Pro lead with source "Website" and the tag "Spring", skipping anyone already in my leads." → `list_leads`, `create_lead`
- **[Follow up on stale leads](https://cotlet.dev/integrations/houzz-pro-api-mcp-server/follow-up-on-stale-leads)** (runs: weekly): "Find Houzz Pro leads in Followed Up, Connected, Meeting Scheduled or Proposal/Estimate Sent with no activity for 10 days. Skip any that already have an open task, and create a follow-up task for Sam Rivera due tomorrow for the rest." → `list_leads`, `get_lead`, `create_task`
- **Mark a lead won and convert it to a project**: "The Miller kitchen lead signed. Mark it Won and convert it to a project starting November 3." → `list_leads`, `update_lead_stage`, `convert_lead_to_project`
- **Build and send an estimate**: "Build an estimate for the Oak Street kitchen from this scope list and send it to the client." → `list_projects`, `create_estimate`, `send_document`
- **[Create progressive invoices from an estimate](https://cotlet.dev/integrations/houzz-pro-api-mcp-server/progressive-invoicing)**: "Bill the next draw on the approved Oak Street estimate: 30% for rough-in. Check what is already invoiced, create the invoice and send it to Dana, issued on send." → `list_projects`, `list_estimates`, `list_invoices`, `create_invoice`, `send_document`
- **Log crew hours on projects** (runs: weekly): "Here are this week's crew hours from the group chat. Log each line as a Houzz Pro time entry for that team member on the right project and activity, and list anything you could not match." → `list_projects`, `log_time`

## Can Houzz Pro automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Houzz Pro connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to import leads from a spreadsheet, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

| Where | How to connect | How to schedule |
|---|---|---|
| Your AI agent | Add https://cotlet.dev/mcp/v1 with your API key. | A scheduled agent run, for example a Claude Code routine. |
| n8n | MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/houzz-pro/{tool}. | Schedule Trigger node. |
| Make | HTTP module: POST https://cotlet.dev/api/v1/houzz-pro/{tool} with an Authorization: Bearer header and a JSON body. | Scenario schedule. |
| Zapier | Webhooks by Zapier: POST https://cotlet.dev/api/v1/houzz-pro/{tool} with the same header and body. | Schedule by Zapier trigger. |
| Your own script | POST https://cotlet.dev/api/v1/houzz-pro/{tool} with your API key. | cron or GitHub Actions. |

## Tools

**For AI agents:** Every endpoint and its schema is public. The 14 endpoints on this page, with parameters and example responses, can be listed without an account. Calling one returns 403 until the account has an API key with access to Houzz Pro.

### list_leads

Leads with stage, client, location, project type, source, tags and last activity. Access: read. REST: `POST /api/v1/houzz-pro/list_leads`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `stage` | string | no | Lead stage, e.g. New, Followed Up, Connected, Meeting Scheduled, Proposal/Estimate Sent, Won, or a custom stage. |
| `query` | string | no | Keyword search. |
| `lead_source` | string | no | Only leads from this source. |
| `tags` | string[] | no | Only leads with these tags. |
| `limit` | integer | no | 1 to 100. Default: 50. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists leads from your pipeline, newest first. Filter by stage, source, tags or a keyword to find the leads you need. Stages are New, Followed Up, Connected, Meeting Scheduled, Proposal/Estimate Sent, Won, or a custom stage you added. Pages hold up to 100 leads; pass next_cursor back as cursor for the next page.

Example response:

```json
{
  "leads": [
    {
      "lead_id": "lead_20418",
      "lead_name": "Miller Kitchen",
      "stage": "Proposal/Estimate Sent",
      "client_name": "Dana Miller",
      "location": "Austin, TX",
      "project_type": "Kitchen remodel",
      "lead_source": "Website",
      "tags": [
        "Spring"
      ],
      "estimated_revenue": 29500,
      "last_activity": "2026-09-24T15:10:00Z"
    }
  ],
  "next_cursor": null
}
```

### get_lead

Full lead: client contact, address, description, estimated revenue and profit, notes and tasks. Access: read. REST: `POST /api/v1/houzz-pro/get_lead`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `lead_id` | string | yes | Lead ID from list_leads. |

Returns one lead with the client contact, address, description, the optional estimated revenue, profit and budget, and its open tasks. Use it before following up so your agent sees what is already planned.

Example response:

```json
{
  "lead_id": "lead_20418",
  "lead_name": "Miller Kitchen",
  "stage": "Proposal/Estimate Sent",
  "client": {
    "name": "Dana Miller",
    "email": "dana@example.com",
    "phone": "+1 555 0100"
  },
  "address": "12 Oak Street, Austin, TX",
  "description": "Full kitchen remodel, new cabinets and counters.",
  "estimated_revenue": 29500,
  "tasks": [
    {
      "task_id": "tsk_5521",
      "title": "Send revised layout",
      "due_date": "2026-10-09",
      "status": "open"
    }
  ]
}
```

### list_projects

Projects with client, address and status. Access: read. REST: `POST /api/v1/houzz-pro/list_projects`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `query` | string | no | Search by project or client name. |
| `limit` | integer | no | 1 to 100. Default: 50. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists your projects, newest first, with client name and address. Search by project or client name. Use the project_id with the estimate, invoice, task and time tools. Pages hold up to 100 projects.

Example response:

```json
{
  "projects": [
    {
      "project_id": "prj_30871",
      "name": "Oak Street Kitchen",
      "client_name": "Dana Miller",
      "address": "12 Oak Street, Austin, TX",
      "status": "active"
    }
  ],
  "next_cursor": null
}
```

### list_tasks

Tasks from the Task Center, sorted by due date, with assignee and status. Access: read. REST: `POST /api/v1/houzz-pro/list_tasks`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `project_id` | string | no | Only tasks of this project or lead. |
| `status` | enum | no | open, completed or all. Default: open. |
| `assignee` | string | no | Team member, client or sub name. |

Returns tasks as the Task Center shows them, sorted by due date, each with assignee, due date, status and the lead or project it belongs to. Assignees can be team members, clients or subs.

Example response:

```json
{
  "tasks": [
    {
      "task_id": "tsk_5521",
      "title": "Send revised layout",
      "project": "Miller Kitchen",
      "assignee": "Sam Rivera",
      "due_date": "2026-10-09",
      "status": "open"
    }
  ]
}
```

### list_estimates

Estimates of a project with title, total and client approval. Access: read. REST: `POST /api/v1/houzz-pro/list_estimates`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `project_id` | string | yes | Project ID from list_projects. |

Returns the estimates of one project with title, total and whether the client approved, declined or has not answered. Pass estimate_id to create_invoice.

Example response:

```json
{
  "estimates": [
    {
      "estimate_id": "est_48213",
      "title": "Kitchen remodel",
      "subtotal": 29500,
      "currency": "USD",
      "approval": "approved"
    }
  ]
}
```

### list_invoices

Invoices of a project with code, total, status and payments received. Access: read. REST: `POST /api/v1/houzz-pro/list_invoices`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `project_id` | string | yes | Project ID from list_projects. |

Returns the invoices of one project with invoice code, total, status (for example draft or sent) and payments received. Issued invoices are locked in Houzz Pro.

Example response:

```json
{
  "invoices": [
    {
      "invoice_id": "inv_77105",
      "code": "INV-0012",
      "subtotal": 8850,
      "currency": "USD",
      "status": "draft",
      "paid": 0
    }
  ]
}
```

### create_lead

New lead in your pipeline. Access: write. REST: `POST /api/v1/houzz-pro/create_lead`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `lead_name` | string | yes | Lead name. |
| `client_name` | string | yes | Client full name. |
| `email` | string | no | Client email. |
| `phone` | string | no | Client phone. |
| `address` | string | no | Lead address. |
| `project_type` | string | no | Project type. |
| `lead_source` | string | no | Where the lead came from. |
| `stage` | string | no | Lead stage. Default: New. |
| `tags` | string[] | no | Lead tags. |
| `estimated_revenue` | integer | no | Estimated revenue, whole currency units. |
| `description` | string | no | Notes about the project. |

Adds a lead to your pipeline. Lead name and client name are required; everything else is optional. Source can be any in your Lead Sources list. The lead reaches no client and is fixed by hand if wrong, so this tool runs without asking.

Example response:

```json
{
  "lead_id": "lead_20457",
  "lead_name": "Miller Kitchen",
  "stage": "New",
  "lead_source": "Website",
  "tags": [
    "Spring"
  ],
  "status": "created"
}
```

### update_lead_stage

Move a lead to another stage of your pipeline. Access: write. REST: `POST /api/v1/houzz-pro/update_lead_stage`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `lead_id` | string | yes | Lead ID from list_leads. |
| `stage` | string | yes | Target stage, e.g. Connected or Won. |

Moves a lead to another stage, such as Connected or Won. Reaches no client and is undone by moving the lead back, so it runs without asking.

Example response:

```json
{
  "lead_id": "lead_20418",
  "stage": "Won",
  "status": "updated"
}
```

### convert_lead_to_project

Turn a won lead into a project; the lead address becomes the project address. Cannot be undone. Access: write, asks the user first. REST: `POST /api/v1/houzz-pro/convert_lead_to_project`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `lead_id` | string | yes | Lead ID from list_leads. |
| `estimated_start` | date | no | Estimated start date. |
| `estimated_revenue` | integer | no | Estimated revenue, whole currency units. |

Converts a lead to a project and carries the lead address over as the project address. Estimated start date and estimated revenue are optional. Houzz Pro cannot turn a project back into a lead. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "project_id": "prj_30871",
  "name": "Miller Kitchen",
  "address": "12 Oak Street, Austin, TX",
  "estimated_start": "2026-11-03",
  "status": "converted"
}
```

### create_task

Task on a project or lead, assigned to a team member, client or sub. Access: write. REST: `POST /api/v1/houzz-pro/create_task`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `title` | string | yes | Task title. |
| `project_id` | string | no | Project or lead the task belongs to. |
| `assignee` | string | no | Team member or sub name. |
| `due_date` | date | no | Due date. |
| `description` | string | no | Task details. |

Creates a task on a lead or project and assigns it to a team member, client or sub; it then shows in the Task Center. Tasks for clients can be private or shared; this tool creates tasks for your team and subs, so nothing reaches a client. Runs without asking.

Example response:

```json
{
  "task_id": "tsk_5530",
  "title": "Follow up on the Miller kitchen estimate",
  "project_id": "lead_20418",
  "assignee": "Sam Rivera",
  "due_date": "2026-10-14",
  "status": "open"
}
```

### log_time

Time entry on a project; rate, markup and billable status come from the activity. Access: write. REST: `POST /api/v1/houzz-pro/log_time`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `project_id` | string | yes | Project ID from list_projects. |
| `activity` | string | yes | Activity name from your Time Management list. |
| `date` | date | yes | Day worked. |
| `hours` | string | yes | Time worked, e.g. 6 or 1.5. |
| `team_member` | string | no | Who worked. Default: you. Needs Time Management permission. |
| `description` | string | no | Notes. |

Adds a time entry to a project. The activity sets rate, markup and taxable or billable status. By default the entry is yours; logging for another team member needs the Time Management permission. If time approval is on, the entry waits for approval. Entries linked to an issued invoice cannot be changed. Reaches no client, so it runs without asking.

Example response:

```json
{
  "entry_id": "te_9042",
  "project_id": "prj_30871",
  "activity": "Site Supervision",
  "date": "2026-10-11",
  "hours": 6,
  "status": "logged"
}
```

### create_estimate

Draft estimate on a project from line items. Nothing reaches the client until you send it. Access: write. REST: `POST /api/v1/houzz-pro/create_estimate`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `project_id` | string | yes | Project ID from list_projects. |
| `title` | string | no | Estimate title. |
| `items` | object | yes | List of { description, quantity, unit_price, taxable }. |

Creates a draft estimate on a project from line items, each with description, quantity, unit price and a taxable flag. The draft stays in Houzz Pro until send_document emails it to the client, so this tool runs without asking.

Example response:

```json
{
  "estimate_id": "est_48213",
  "project_id": "prj_30871",
  "title": "Kitchen remodel",
  "status": "draft",
  "subtotal": 29500,
  "currency": "USD",
  "items": 3
}
```

### create_invoice

Draft invoice from an estimate: the whole document, selected line items or a percentage. Access: write. REST: `POST /api/v1/houzz-pro/create_invoice`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `estimate_id` | string | yes | Estimate ID from list_estimates. |
| `percent` | integer | no | Bill this percentage of the estimate (progressive invoicing). |
| `item_ids` | string[] | no | Bill only these line items. |

Creates a draft invoice from an estimate: the whole estimate, selected line items or a percentage of the total, as progressive invoicing in Houzz Pro does. A code is generated at creation. Nothing reaches the client until send_document, so this tool runs without asking.

Example response:

```json
{
  "invoice_id": "inv_77105",
  "code": "INV-0012",
  "project": "Oak Street Kitchen",
  "status": "draft",
  "subtotal": 8850,
  "currency": "USD"
}
```

### send_document

Email an estimate or invoice to the client to view, approve or pay online. Access: write, asks the user first. REST: `POST /api/v1/houzz-pro/send_document`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `document_id` | string | yes | Estimate or invoice ID. |
| `message` | string | no | Email message to the client. |
| `issue_on_send` | boolean | no | Invoices only: lock the invoice when sent. Default: false. |

Emails an estimate or invoice to the client, who can open it on a computer, phone or tablet. For invoices, issue_on_send locks the invoice when it is sent. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "document_id": "inv_77105",
  "type": "invoice",
  "status": "sent",
  "issued": false,
  "sent_to": "dana@example.com"
}
```

## How do I connect Houzz Pro to Claude Code, Codex or Cursor?

Connecting Houzz Pro takes three steps: request access, sign in to Houzz Pro once, then add one MCP server or call the REST API with the same key.

### Connect Houzz Pro to your agent.

1. **Create an account** Sign up and add Houzz Pro in the console. Your API key is there too.

2. **Sign in to Houzz Pro once** Open the connect page from the console and sign in to Houzz Pro the way you always do. We keep the session, never your password, and you can revoke it anytime.

3. **Add Cotlet to your agent** Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

   Claude Code:

```
claude mcp add --transport http cotlet \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
```

   Cursor:

```
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": {
        "Authorization": "Bearer ${COTLET_API_KEY}"
      }
    }
  }
}
```

   Codex:

```
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
```

4. **Ask your agent** Ask in plain words. Your agent finds the Houzz Pro tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

```
Add every row of leads.csv as a new Houzz Pro lead with source "Website" and the tag "Spring", skipping anyone already in my leads.
```

### Call Houzz Pro from your scripts.

1. **Export your API key** Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

```
export COTLET_API_KEY="cotlet_..."
```

2. **Call a tool** Every tool is a POST endpoint at /api/v1/houzz-pro/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

```
curl https://cotlet.dev/api/v1/houzz-pro/create_invoice \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"estimate_id":"est_48213","percent":30}'
```

3. **Read the result** You get plain JSON back, ready for your script. A failed call costs nothing.

```
{
  "invoice_id": "inv_77105",
  "code": "INV-0012",
  "project": "Oak Street Kitchen",
  "status": "draft",
  "subtotal": 8850,
  "currency": "USD"
}
```

## Why use Cotlet for Houzz Pro?

**Built for agents**

- One MCP server for every app you connect.
- The same tools as a REST API for scripts and cron jobs.
- Works with Claude Code, Codex and Cursor.

**Your login stays yours**

- You sign in to Houzz Pro yourself. We keep only the session, encrypted with AES-256.
- The model never sees a login.
- No stored passwords, no CAPTCHA solving, no MFA bypass.

**You stay in control**

- Pick read only, or read and write.
- Anything that reaches other people waits for your OK, unless you switch it off per tool.
- Revoke access in one click.

**Kept working for you**

- We test every integration daily.
- When Houzz Pro changes, the tool pauses until we fix it.
- Failed calls cost nothing.

## Is there a Houzz Pro MCP server on GitHub?

No community MCP server for Houzz Pro was found. Zapier can push new leads and projects into Houzz Pro, but it has no triggers, so nothing reads data back out.

|  | Zapier | Cotlet |
|---|---|---|
| Setup | Connect Houzz Pro in the Zap editor, if your package includes it | Request access, sign in to Houzz Pro once, add one MCP server or API key |
| Reading data | None: no triggers, so leads and projects cannot be read or exported | Leads, projects, tasks, estimates and invoices |
| Write actions | Create lead and create project only | Stages, conversion, tasks, time, estimates and invoices; each send asks for your OK |
| When Houzz Pro changes | Zapier maintains its app | Our team tests it daily and fixes it for you; failed calls are free |
| Your Houzz Pro session | Connection held by Zapier | Encrypted in an EU vault, limited to the actions you allow, revoked in one click |
| Where it runs | Zapier cloud, fixed Zaps | Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule |
| Price | Zapier plan, plus a Houzz Pro package that includes Zapier | Free 7-day trial with 5,000 credits, then credits per call |

### Which one fits you

**Pick Cotlet if**

- you are not a developer, or you do not want to maintain a server
- you need it to keep working when Houzz Pro changes, without checking it yourself
- your agent or a script should run it on a schedule, also while your computer is off

**Pick an open-source server if**

- you are comfortable installing, updating and fixing it yourself
- you want the session to stay on your own computer
- you only need it now and then, from one MCP client

## How much does the Houzz Pro API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Houzz Pro API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

| Size | Price | Credits / month | Per credit |
|---|---|---|---|
| Solo | $29/mo | 3,000 | about $0.0097 |
| Pro | $99/mo | 12,000 | about $0.0083 |
| Agency | $299/mo | 40,000 | $0.0075 |

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the `Authorization: Bearer` header. [See full pricing](https://cotlet.dev/pricing)

## How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Houzz Pro account.

- **Company details:** The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. [Terms](https://cotlet.dev/terms)
- **Your session:** You sign in to Houzz Pro yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Houzz Pro tool you allowed. When it expires, your agent gives you a link to sign in again. [Security](https://cotlet.dev/security)
- **Revoking access:** Disconnect Houzz Pro in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
- **What we never do:** Store passwords, solve CAPTCHAs or bypass MFA.
- **Houzz Pro's terms:** You use your own Houzz Pro account and stay responsible for following Houzz Pro's terms. Cotlet is independent and not affiliated with Houzz Pro. [Terms](https://cotlet.dev/terms)
- **Contact:** Questions about the company, security or an app: [contact@cotlet.dev](mailto:contact@cotlet.dev)

## Frequently asked questions

**How do I get access?**

Request access and pick Houzz Pro. Cotlet reviews each request and emails you your API key.

**Do I need to be technical?**

No. You sign in to Houzz Pro once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

**Is a hosted server safe? My Houzz Pro session would leave my computer.**

Cotlet keeps your Houzz Pro session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

**Do I need a Houzz Pro package with Zapier?**

No. Cotlet works in your own Houzz Pro account and does not use the Zapier app, which Houzz Pro offers on select packages only (checked 11 Oct 2026). Logging time for other team members needs the Time Management permission.

**Can my agent send an estimate or invoice on its own?**

Only if you switch confirmation off for send_document. By default you confirm each send; drafts from create_estimate and create_invoice reach no client.

**Can my agent post or send messages in Houzz Pro without asking me?**

No. Every call to convert_lead_to_project or send_document waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. create_lead, update_lead_stage, create_task, log_time, create_estimate, create_invoice runs without asking, because it sends nothing to anyone and one call undoes it.

**Can I use the Houzz Pro API in n8n?**

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/houzz-pro/{tool} from the HTTP Request node.
