Install
openclaw skills install hemlaneClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Operate Hemlane using HAR-derived GraphQL patterns and browser session artifacts. Use when analyzing Hemlane HAR files, extracting GraphQL operations from Hemlane traffic, documenting Hemlane mutations/queries, or performing/reconstructing Hemlane workflows like referrals, tenant replies, work orders, transactions, requests, and maintenance updates from saved browser captures.
openclaw skills install hemlaneUse this skill for Hemlane reverse-engineering and repeatable browser-captured workflows.
Read references/har-summary.md first when you need a quick map of what the saved Hemlane HAR files contain.
Saved flows consolidated into this skill:
references/har-summary.md to find the closest HAR.references/graphql-operations.md to find the relevant GraphQL operation names, variables, and query excerpts.scripts/extract_hemlane_graphql.py.Use scripts/capture_hemlane_auth_via_cdp.py to capture fresh auth headers from an authenticated Brave browser session via CDP.
--remote-debugging-port=9222)python3 skills/hemlane/scripts/capture_hemlane_auth_via_cdp.py \
--endpoint-kind get-properties \
--out-file /tmp/hemlane-auth.json
get-properties - Property listget-tenants - Tenant listget-transactions - Financial transactionsget-maintenance - Maintenance requestssend-tenant-reply - Tenant messagingsubmit-referral - HubSpot referral formwork-order-comment - Work order commentsmaintenance-comment - Maintenance commentsHemlane MCP server provides tools for common operations via MCP protocol.
mcp/server.py - FastMCP server wrapping existing scripts
capture_auth - Capture auth headers from browser CDPsend_tenant_reply - Send tenant replysubmit_referral - Submit referralpost_workorder_comment - Post work order commentpost_maintenance_comment - Post maintenance commentextract_rent_roll - Extract rent roll dataquery_recurring_payment_requests - Query active/expired recurring rent/payment requests from Financials HARquery_financials_operation - Replay read-oriented Financials GraphQL operations from financials HAR samples, including page navigationlist_graphql_operations - List available GraphQL opsAdded to config/mcporter.json:
{
"mcpServers": {
"hemlane": {
"command": "python3",
"args": ["/home/umbrel/.openclaw/workspace/skills/hemlane/mcp/server.py"],
"transport": "stdio"
}
}
}
references/har-summary.md - per-HAR inventory and auth header observationsreferences/graphql-operations.md - extracted GraphQL operations and sample variable payloadsscripts/extract_hemlane_graphql.py - reusable extractor for future HAR filesscripts/capture_hemlane_auth_via_cdp.py - CDP auth capture from browsermcp/server.py - MCP server for tool accessreferences/operation-catalog.json and references/operation-catalog.csv - clean operation catalog exportsreferences/runbooks.md - explicit runbooks for referral submit, tenant reply, maintenance/work-order comment, and transaction lookupreferences/*.har - preserved original Hemlane HAR capturesscripts/build_hemlane_catalog.py - regenerate catalog from HAR filesUse references/replay-scaffold.md and scripts/replay_hemlane_graphql.py when you need to move from HAR analysis to safe request replay. Start with --dry-run and provide cookies/CSRF via env vars only.
Use these wrappers for the highest-value Hemlane workflows before dropping down to the generic replay scaffold:
scripts/submit_hemlane_referral.pyscripts/post_hemlane_workorder_comment.pyscripts/post_hemlane_maintenance_request_comment.pyscripts/send_hemlane_tenant_reply.pyscripts/capture_hemlane_auth_via_cdp.pyCaptured from lease_hemlane.com.har:
| Operation | Type | Purpose |
|---|---|---|
ODCreateLeaseAgreement | Mutation | Create lease agreement for tenant group |
ODCreateLeaseAgreementTemplate | Mutation | Create e-sign packet from lease |
ODLeaseAgreementRevertEsignPacket | Mutation | Revert/cancel e-sign packet |
mutation ODCreateLeaseAgreement($input: LeaseAgreementCreateInput!) {
leaseAgreementCreate(input: $input) {
error
leaseAgreement {
id
status
tenantGroup { id }
survey
createdAt
}
}
}
Variables:
tenantGroupId (required) - The tenant group IDsurvey (optional) - Additional disclosures, etc.mutation ODCreateLeaseAgreementTemplate($input: EsignDocumentCreateLeaseAgreementTemplateInput!) {
esignDocumentCreateLeaseAgreementTemplate(input: $input) {
error
esignPacket {
id
sourceSignable { ... on LeaseAgreement { id status } }
}
}
}
Use scripts/create_hemlane_lease.py for lease generation:
python3 scripts/create_hemlane_lease.py \
--tenant-group-id "53cf1ff2-56d7-41e5-a0bd-9d3cc2a99aab" \
--auth-file /tmp/hemlane-auth.json \
--create-esign
references/lease-mutations.graphql - Lease generation mutationsscripts/create_hemlane_lease.py - Lease creation wrapperHAR-derived read wrappers added to mcp/server.py:
query_catalog_operation — generic read-only replay from references/operation-catalog.json; refuses mutations/write-like operations.get_context_values — wraps ODGetContextValues for owner dashboard context/properties.get_tenant_groups — wraps ODTenantsAndLeasesTenantGroups for tenant/lease views.get_maintenance_requests — wraps ODMaintenanceRequests.get_transactions — wraps TransactionsNextCursorQuery using the financials replay script.See README.md for setup, auth model, and HAR reverse-engineering workflow.