agentCLAWHUBUnverified

housecallpro-mcp

Read a Housecall Pro estimate or invoice your contractor sent you — line items, totals, tax, what is still owed, the company behind it — from a shell with plain curl, instead of running the housecallpro-mcp server. Use when you want the data without the MCP, in a script, or on a machine where the MCP isn't installed. Covers declining an option, and why approving cannot be scripted. Skill: housecallpro-mcp Owner: chrischall Summary: Read a Housecall Pro estimate or invoice your contractor sent you — line items, totals, tax, what is still owed, the company behind it — from a shell with plain curl, instead of running the housecallpro-mcp server. Use when you want the data without the MCP, in a script, or on a machine where the MCP isn't installed. Covers declining an option, and why approving cann

OpenClaw

Rank

62

Safety

84

Downloads

1.0k

Updated

Oct 11, 2026

Version

1.2.2

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 11, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 11, 2026
Adoption signal
1K downloadsadoption · observed Oct 11, 2026
Latest release
1.2.2release · observed Oct 10, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:housecallpro-mcp
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-housecallpro-mcp/snapshot"

Run-check

$0.02 USD

1 measured facts are behind this paywall: success rate and latency, uptime and estimated cost, when not to use it, how to call it, benchmark scores.

Agents pay $0.02 in USDC. A card payment is $0.50, the smallest a card allows.

Documentation

CLAWHUB

145,067 characters of source documentation, loaded on request.

Extracted files

4 files captured from the source.

SKILL.md

---
name: housecallpro
description: >-
  Read a Housecall Pro estimate or invoice your contractor sent you — line
  items, totals, tax, what is still owed, the company behind it — from a shell
  with plain curl, instead of running the housecallpro-mcp server. Use when you want the data without the MCP, in a
  script, or on a machine where the MCP isn't installed. Covers declining an
  option, and why approving cannot be scripted.
---

# Housecall Pro customer portal via curl (no MCP)

This reads the **customer** side of Housecall Pro: the estimate or invoice a
contractor emails or texts you. It is not the Housecall Pro public API — that
one serves the business running on Housecall Pro and needs an API key from
their account.

**No browser bridge is needed.** `app.housecallpro.com` is not bot-walled; a
plain `curl` gets a `200`. Do not reach for `fpx` here.

## The one thing to know first

There is no account and no standing link: Housecall Pro sends a separate,
disposable link per document, so you work from whichever link you were sent.

Your link is a **bearer credential**. Anyone holding it can read the estimate
and decline it. Keep it in a variable or a file you control, never in a command
you paste into a shared transcript, and never commit it.

## Setup

Two forms of link exist, and **estimates and invoices use different token
shapes**: an estimate token is 129 characters (two 64-char hex halves joined by
`_`), an invoice token is a bare 32-char hex string. The short link redirects to
whichever applies:

```sh
# What your contractor sent (short form)
SHORT='https://pro.housecallpro.com/mobile_estimate/XXXXXXXXXX'   # or /mobile_invoice/…

# Resolve it to the retrieval token (an estimate's is 129 chars, an invoice's 32)
HCP_TOKEN=$(curl -sI "$SHORT" | tr -d '\r' | awk 'tolower($1)=="location:"{print $2}' | sed 's#.*/##')

# If you already have a client.housecallpro.com/estimates/… or /invoices/… link, just:
# HCP_TOKEN='<the last path segment>'

echo "${#HCP_TOKEN}"   # 129 for an estimate, 32 for an invoice
```

## Read the estimate

```sh
curl -s -H 'Accept: application/json' \
  "https://app.housecallpro.com/alpha/customer_estimates/$HCP_TOKEN" > estimate.json
```

No `Authorization` header — reads carry the token in the path.

**Money is integer cents.** `total_amount: 34639` means `$346.39`. Divide by 100
before reporting anything. `tax.rate` is the exception: it is a fraction
(`0.0825` = 8.25%) and must not be scaled.

A one-line summary:

```sh
jq -r '
  "\(.company_name) — estimate #\(.estimate.data.estimate_number)",
  "For: \(.customer_name) at \(.estimate.data.address.data.printable_address)",
  (.options.data[] |
    "  \(.name) [\(.status)] $\(.total_amount/100)"),
  (.options.data[].line_items.data[] |
    "    \(.quantity) x \(.name) @ $\(.unit_price/100) = $\(.amount/100)")
' estimate.json
```

More recipes, including the company lookup and the full field map, are in
[`references/recipes.md`](references/recipes.md).

## Is it 

_meta.json

{
  "ownerId": "kn700jq4sjtf2anb0rk3ft4p7n856872",
  "slug": "housecallpro-mcp",
  "version": "1.2.2",
  "publishedAt": 1791646159740
}

references/recipes.md

# Housecall Pro consumer API — recipes

Every recipe assumes `HCP_TOKEN` holds the 129-character retrieval token, as set
up in `SKILL.md`. Endpoints marked **unverified** were read out of the SPA's
JavaScript but never exercised against a real document.

## Field map — `GET /alpha/customer_estimates/$HCP_TOKEN` (verified)

The envelope nests under `{object, data}` wrappers.

| Path | What it is |
| --- | --- |
| `.estimate.data.estimate_number` | Human-facing estimate number |
| `.estimate.data.estimate_uuid` | `csr_…`, the estimate's id |
| `.estimate.data.organization_id` | Company UUID — feeds the company lookup |
| `.estimate.data.customer_approval_mode` | e.g. `single_option` |
| `.estimate.data.address.data.printable_address` | Service address |
| `.options.data[]` | One entry per priced option |
| `.options.data[].id` | `est_…` — **this is what you decline** |
| `.options.data[].status` | e.g. `Awaiting Approval`, `Declined` |
| `.options.data[].approval_date` | `null` until approved |
| `.options.data[].sub_total` / `.total_amount` | **integer cents** |
| `.options.data[].tax.data.rate` | Fraction (`0.0825`), NOT cents |
| `.options.data[].tax.data.amount` | **integer cents** |
| `.options.data[].line_items.data[]` | `name`, `description`, `quantity`, `kind`, `unit_price`, `amount` |
| `.customer_name`, `.customer_email` | Who it is for |
| `.message_from_pro` | Free-text note |
| `.company_name`, `.company_phone_number`, `.company_email`, `.company_website` | The contractor |
| `.payment_options.can_pay_online` | Whether online payment is offered |
| `.deposit_requirement` | e.g. `not required` |
| `.signatures_enabled` | Whether approval demands a signature |

`kind` on a line item is `labor` or `material` — not `service`.

## Totals, correctly scaled

```sh
jq -r '.options.data[]
  | "\(.name): subtotal $\(.sub_total/100) + tax $\(.tax.data.amount/100)"
  + " (\(.tax.data.rate*100)%) = $\(.total_amount/100)"' estimate.json
```

## Line items as TSV

```sh
jq -r '.options.data[].line_items.data[]
  | [.name, .kind, .quantity, (.unit_price/100), (.amount/100)] | @tsv' estimate.json
```

## Just the open options and their ids

```sh
jq -r '.options.data[]
  | select(.approval_date == null and .status != "Declined")
  | "\(.id)\t\(.name)\t$\(.total_amount/100)"' estimate.json
```

## The contractor behind it (verified)

```sh
ORG=$(jq -r '.estimate.data.organization_id' estimate.json)
curl -s "https://app.housecallpro.com/alpha/organizations/$ORG" | jq
```

Returns `id`, `company_name`, `phone_number`, `email`, `website`, `logo_url`,
`address`, `default_arrival_window`, `terms_url`, `founding_pro_uuid`. Needs no
auth header at all.

## Decline (verified shape, from the app's own code)

```sh
curl -s -X POST \
  -H "Authorization: Token $HCP_TOKEN" \
  --data-urlencode "estimate_option_uuids[]=est_XXXX" \
  https://app.housecallpro.com/api/estimates/estimate_options/customer_declines
```

Repeat `--data-urlencode "estimate_option_uuids[]=…"

skill-card.md

## Description:

Guides customers in reading Housecall Pro estimates and invoices from the shell and declining estimate options without an MCP server.

This skill is ready for commercial/non-commercial use.

## Publisher:

[chrischall](https://clawhub.ai/user/chrischall)

### License/Terms of Use:

MIT-0

## Use Case:

Customers and developers use this skill to inspect contractor estimates, line items, invoice totals, and amounts due with shell commands. It also explains how to decline an estimate option and why approvals must happen in a browser.

### Deployment Geography for Use:

Global

## Known Risks and Mitigations:

Risk: Customer links grant access to the document and can authorize a decline if disclosed.

Mitigation: Keep links and tokens out of shared logs, transcripts, and repositories; store them only in a controlled variable or file.

Risk: Declining an option can notify the contractor and may not be reversible from the shell.

Mitigation: Review the estimate and selected option before declining, then re-read the document to confirm its status.

Risk: An approval commits the customer to a quoted price and cannot be scripted with this skill.

Mitigation: Complete approvals in the browser; do not attempt to bypass the approval flow.

## Reference(s):

- [Housecall Pro consumer API recipes](artifact/references/recipes.md)
- [ClawHub skill release](https://clawhub.ai/chrischall/skills/housecallpro-mcp)

## Skill Output:

**Output Type(s):** [Shell commands, Guidance]

**Output Format:** [Markdown with shell and jq examples]

**Output Parameters:** [1D]

**Other Properties Related to Output:** [Summaries of estimates or invoices may include customer and contractor details; amounts are reported in currency units rather than integer cents.]

## Skill Version(s):

1.2.2 (source: ClawHub release evidence)

## Ethical Considerations:

Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
Github ReposUpdated 2d agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/chrischall/skills/housecallpro-mcp",
      "sourceUrl": "https://clawhub.ai/chrischall/skills/housecallpro-mcp",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T18:26:57.801Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-housecallpro-mcp/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-housecallpro-mcp/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-11T18:26:57.801Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1K downloads",
      "href": "https://clawhub.ai/chrischall/housecallpro-mcp",
      "sourceUrl": "https://clawhub.ai/chrischall/housecallpro-mcp",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T18:26:57.801Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.2.2",
      "href": "https://clawhub.ai/chrischall/housecallpro-mcp",
      "sourceUrl": "https://clawhub.ai/chrischall/housecallpro-mcp",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-10T15:29:19.740Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-housecallpro-mcp/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-housecallpro-mcp/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.2.2",
      "description": "- Removed the sample skill-card.md file. - No changes to core functionality or usage instructions.",
      "href": "https://clawhub.ai/chrischall/housecallpro-mcp",
      "sourceUrl": "https://clawhub.ai/chrischall/housecallpro-mcp",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-10T15:29:19.740Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 11, 2026.

Sponsored

Ads related to housecallpro-mcp and adjacent AI workflows.