# app.onehaus/haus (remote · mcp.onehaus.app)

OneHaus household tools: tasks, calendar, contacts, pets, vehicles, documents and more.

- Trust score: 84/100 (high trust)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.onehaus.app`: 84/100 (this document), [markdown](https://verifymcp.io/servers/app-onehaus-haus/mcp.md), [page](https://verifymcp.io/servers/app-onehaus-haus/mcp)

## Channel facts

- Endpoint: `https://mcp.onehaus.app`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.3.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 97/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 89/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 9261 tokens (~134/item across 69 items; 68 tools + 1 resources), over budget; trim descriptions and params.
  - Tools include usage examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 73/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http app-onehaus-haus https://mcp.onehaus.app/
```

### Codex

```toml
[mcp_servers.app-onehaus-haus]
url = "https://mcp.onehaus.app/"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-onehaus-haus": {
      "type": "remote",
      "url": "https://mcp.onehaus.app/",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-onehaus-haus --url https://mcp.onehaus.app/ --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-onehaus-haus:
    url: "https://mcp.onehaus.app/"
```

### Other

```json
{
  "mcpServers": {
    "app-onehaus-haus": {
      "type": "http",
      "url": "https://mcp.onehaus.app/"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 83, +6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 77, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 78, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 77)

First indexed and scored.

## MCP tools (68)

### `create_contact` (~207 tokens)

Create a contact in the household's address book. Only firstName is required; all other details (address, date of birth, notes, a flag to prepare a birthday present) are optional and can be filled in later with update_contact.

Input parameters:

- `address` (object): The contact's postal address.
- `dateOfBirth` (string): YYYY-MM-DD format
- `displayName` (string): An alternate name to show for the contact instead of first/last, e.g. a nickname, company name, or role.
- `email` (string): The contact's email address.
- `firstName` (string, required): The contact's first name. The only required field.
- `lastName` (string): The contact's last (family) name.
- `notes` (string): Free-text notes about the contact.
- `phone` (string): The contact's phone number, in any format.
- `prepareBirthdayPresent` (boolean): Whether to prepare a birthday present for this contact

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_contact` (~284 tokens)

Update a contact by id. Only the fields supplied are changed; omitted fields keep their current value (dateOfBirth is the exception: an empty string explicitly clears it).

Input parameters:

- `address` (object): The contact's postal address. Omit to leave unchanged; when supplied, replaces the whole address.
- `dateOfBirth` (string): YYYY-MM-DD format. Omit or pass null to leave unchanged; pass an empty string to clear it.
- `displayName` (string): An alternate name to show for the contact instead of first/last, e.g. a nickname, company name, or role. Omit to leave unchanged.
- `email` (string): The contact's email address. Omit to leave unchanged.
- `firstName` (string): The contact's first name. Omit to leave unchanged.
- `id` (string, required): The id of the contact to update, as returned by create_contact or list_contacts.
- `lastName` (string): The contact's last (family) name. Omit to leave unchanged.
- `notes` (string): Free-text notes about the contact. Omit to leave unchanged.
- `phone` (string): The contact's phone number, in any format. Omit to leave unchanged.
- `prepareBirthdayPresent` (boolean): Whether to prepare a birthday present for this contact. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_contact` (~61 tokens)

Soft-delete a contact by id; it is marked deleted and no longer appears in list_contacts, but the underlying record is retained rather than permanently erased.

Input parameters:

- `id` (string, required): The id of the contact to delete, as returned by create_contact or list_contacts.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_contacts` (~26 tokens)

List all contacts in the household. Takes no parameters; soft-deleted contacts are excluded.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_appliance` (~206 tokens)

Create an appliance record for the household, tracking purchase date, warranty expiry, and optional references to previously created warranty/insurance documents.

Input parameters:

- `brand` (string): Manufacturer or brand name.
- `insuranceDocumentId` (string): ID of a previously created document containing the insurance policy.
- `model` (string): Model name or number, as printed on the appliance or its manual.
- `name` (string, required): Name of the appliance, e.g. what it is or where it's located.
- `notes` (string): Freeform notes about the appliance.
- `purchaseDate` (string): Date the appliance was purchased, in YYYY-MM-DD format.
- `serialNumber` (string): Manufacturer serial number, used when contacting support or filing a warranty claim.
- `warrantyDocumentId` (string): ID of a previously created document containing the warranty paperwork.
- `warrantyExpiryDate` (string): Date the manufacturer warranty expires, in YYYY-MM-DD format. Must not be before purchaseDate.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_appliance` (~281 tokens)

Update an appliance's details; omitted fields keep their current value. Rejects the update if the resulting warranty expiry date would fall before the purchase date.

Input parameters:

- `brand` (string): New manufacturer or brand name. Omit to leave unchanged.
- `id` (string, required): ID of the appliance to update.
- `insuranceDocumentId` (string): ID of a previously created document containing the insurance policy. Omit to leave unchanged.
- `model` (string): New model name or number. Omit to leave unchanged.
- `name` (string): New name for the appliance. Omit to leave unchanged.
- `notes` (string): Freeform notes about the appliance. Omit to leave unchanged.
- `purchaseDate` (string): Date the appliance was purchased, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it. Must not be after warrantyExpiryDate.
- `serialNumber` (string): New manufacturer serial number. Omit to leave unchanged.
- `warrantyDocumentId` (string): ID of a previously created document containing the warranty paperwork. Omit to leave unchanged.
- `warrantyExpiryDate` (string): Date the manufacturer warranty expires, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it. Must not be before purchaseDate.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_appliance` (~39 tokens)

Soft-delete an appliance; it is hidden from list_appliances but not permanently erased.

Input parameters:

- `id` (string, required): ID of the appliance to delete.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_appliances` (~16 tokens)

List all appliances in the household

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_calendar_event` (~268 tokens)

Creates a single, one-off calendar event on the household calendar. For a repeating schedule use create_recurring_calendar_event instead.

Input parameters:

- `description` (string): Longer free-text description of the event. Up to 2000 characters.
- `endDateTime` (string): ISO 8601 date-time in UTC (Z-suffix). Must not be before startDateTime.
- `isAllDay` (boolean, required): True for an all-day event with no specific start/end time; false for a timed event.
- `location` (object): Location. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes).
- `notes` (string): Freeform notes attached to the event. Up to 5000 characters.
- `startDateTime` (string, required): ISO 8601 date-time in UTC (Z-suffix). The wall clock is interpreted against the supplied timezone if any.
- `timezone` (string|null): IANA timezone id (e.g. 'Europe/London') describing the wall-clock zone of startDateTime/endDateTime; null = UTC.
- `title` (string, required): Event title/summary shown in calendar views. Required, up to 200 characters.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_calendar_event` (~348 tokens)

Updates fields on an existing single calendar event; only the fields supplied are changed, all others keep their current value. Imported (subscription-sourced) events cannot be edited.

Input parameters:

- `description` (string): New longer free-text description of the event. Omit to leave unchanged. Up to 2000 characters.
- `endDateTime` (string): New end date-time, ISO 8601 in UTC (Z-suffix). Must not be before startDateTime. Omit to leave unchanged.
- `id` (string, required): Id of the calendar event to update.
- `isAllDay` (boolean): True for an all-day event with no specific start/end time; false for a timed event. Omit to leave unchanged.
- `location` (object): New location, replacing the existing one entirely. Omit to leave unchanged. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, note…
- `notes` (string): New freeform notes attached to the event. Omit to leave unchanged. Up to 5000 characters.
- `startDateTime` (string): New start date-time, ISO 8601 in UTC (Z-suffix). Wall clock is interpreted against the supplied timezone if any. Omit to leave unchanged.
- `timezone` (string|null): IANA timezone id (e.g. 'Europe/London') describing the wall-clock zone of startDateTime/endDateTime; null = UTC. Omit to leave unchanged.
- `title` (string): New event title/summary. Omit to leave unchanged. Up to 200 characters.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_calendar_event` (~51 tokens)

Soft-deletes a single calendar event by id. Events imported from a calendar subscription cannot be deleted here; unsubscribe from the source calendar instead.

Input parameters:

- `id` (string, required): Id of the calendar event to delete.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_calendar_events` (~117 tokens)

List calendar events with optional date-range filters

Input parameters:

- `startDateFrom` (string): Inclusive lower bound of the date range, ISO 8601 date-time in UTC. An event matches if it ends (or, when it has no end, starts) on or after this instant. Omit for no lower bound.
- `startDateTo` (string): Inclusive upper bound of the date range, ISO 8601 date-time in UTC. An event matches if it starts on or before this instant. Omit for no upper bound.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_document` (~186 tokens)

Create a document (passport, insurance, certificate, warranty, license, other)

Input parameters:

- `documentNumber` (string): The document's reference or serial number, e.g. a passport number or insurance policy number.
- `documentType` (string, required): The kind of document being stored.
- `fee` (object): The cost associated with the document, e.g. a renewal or issuance fee.
- `issuingAuthority` (string): The organization or authority that issued the document.
- `notes` (string): Free-text notes about the document.
- `renewalCronExpression` (string): Reserved for a future renewal-reminder schedule. Currently accepted but not persisted or acted on by document creation — has no effect yet.
- `title` (string): A custom title for the document. If omitted, one is derived from the document type and number, e.g. 'Passport - 512345678'.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_document` (~222 tokens)

Update a document. Omitted fields unchanged.

Input parameters:

- `documentNumber` (string): The document's reference or serial number, e.g. a passport number or insurance policy number. Omit to leave unchanged.
- `documentType` (string): The kind of document being stored. Omit to leave unchanged.
- `fee` (object): The cost associated with the document, e.g. a renewal or issuance fee. Omit to leave unchanged; when supplied, replaces the whole fee.
- `id` (string, required): The id of the document to update, as returned by create_document or list_documents.
- `issuingAuthority` (string): The organization or authority that issued the document. Omit to leave unchanged.
- `notes` (string): Free-text notes about the document. Omit to leave unchanged.
- `renewalCronExpression` (string): Reserved for a future renewal-reminder schedule. Currently accepted but not persisted or acted on by document updates — has no effect yet.
- `title` (string): A custom title for the document. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_document` (~62 tokens)

Soft-delete a document by id and cascade soft-delete its attachments; none of them appear in listings afterward, but the records are retained rather than permanently erased.

Input parameters:

- `id` (string, required): The id of the document to delete, as returned by create_document or list_documents.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_documents` (~55 tokens)

List documents in the household, optionally filtered to a single document type. Soft-deleted documents are excluded.

Input parameters:

- `documentType` (string): Optional filter to only return documents of this type. Omit to return documents of all types.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_pet` (~142 tokens)

Create a pet. Supports microchip, vet contact, and insurance refs.

Input parameters:

- `dateOfBirth` (string): The pet's date of birth, in YYYY-MM-DD format.
- `insuranceDocumentId` (string): ID of a previously created document containing the pet's insurance policy.
- `microchipNumber` (string): Microchip identification number, used to reunite a lost pet with its household.
- `name` (string, required): The pet's name.
- `notes` (string): Freeform notes about the pet, e.g. dietary needs or medical history.
- `vetContactId` (string): ID of a previously created contact for the pet's vet.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_pet` (~178 tokens)

Update a pet. Omitted fields unchanged.

Input parameters:

- `dateOfBirth` (string): The pet's date of birth, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it.
- `id` (string, required): ID of the pet to update.
- `insuranceDocumentId` (string): ID of a previously created document containing the pet's insurance policy. Omit to leave unchanged.
- `microchipNumber` (string): New microchip identification number. Omit to leave unchanged.
- `name` (string): New name for the pet. Omit to leave unchanged.
- `notes` (string): Freeform notes about the pet. Omit to leave unchanged.
- `vetContactId` (string): ID of a previously created contact for the pet's vet. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_pet` (~38 tokens)

Soft-delete a pet; it is hidden from list_pets but not permanently erased.

Input parameters:

- `id` (string, required): ID of the pet to delete.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_pets` (~16 tokens)

List all pets in the household

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_subscription` (~160 tokens)

Create a subscription for the household to track a recurring cost, such as a streaming service or membership. Accepts an optional cron-based renewal schedule (must not repeat more frequently than once a day) and a fee amount.

Input parameters:

- `fee` (object): The recurring charge for this subscription.
- `name` (string, required): Display name of the subscription, e.g. 'Netflix' or 'Gym membership'.
- `notes` (string): Free-text notes about the subscription.
- `remindMe` (boolean): Whether to send renewal reminders for this subscription
- `renewalCronExpression` (string): Cron expression describing how often the subscription renews. Must not repeat more frequently than once a day.
- `status` (string, required): Lifecycle status of the subscription at creation time.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_subscription` (~209 tokens)

Partially update an existing subscription; only the fields provided are changed, everything else is left as-is. For renewalCronExpression and notes, sending an empty string clears the stored value rather than leaving it unchanged.

Input parameters:

- `fee` (object): The recurring charge for this subscription. Omit to leave unchanged.
- `id` (string, required): ID of the subscription to update.
- `name` (string): Display name of the subscription. Omit to leave unchanged.
- `notes` (string): Free-text notes about the subscription. Omit to leave unchanged, or send an empty string to clear the notes.
- `remindMe` (boolean): Whether to send renewal reminders for this subscription
- `renewalCronExpression` (string): Cron expression describing how often the subscription renews. Must not repeat more frequently than once a day. Omit to leave unchanged, or send an empty string to clear the renewal schedule.
- `status` (string): New lifecycle status for the subscription. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_subscription` (~27 tokens)

Soft-delete a subscription

Input parameters:

- `id` (string, required): ID of the subscription to soft-delete.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_subscriptions` (~38 tokens)

List subscriptions with optional status filter

Input parameters:

- `status` (string): Only return subscriptions with this status. Omit to return subscriptions of all statuses.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_vehicle` (~261 tokens)

Create a vehicle record for the household to track its details, registration and VIN, insurance document, and upcoming MOT/tax/service due dates. All fields are optional.

Input parameters:

- `colour` (string): Colour of the vehicle.
- `insuranceDocumentId` (string): Document ID of insurance policy
- `make` (string): Manufacturer of the vehicle, e.g. 'Toyota'.
- `model` (string): Model name of the vehicle, e.g. 'Corolla'.
- `motDueDate` (string): Date the next MOT (roadworthiness test) is due, in YYYY-MM-DD format.
- `notes` (string): Free-text notes about the vehicle.
- `registration` (string): The vehicle's registration/licence plate as shown on the plate. Free-text; format varies by country.
- `serviceDueDate` (string): Date the vehicle's next scheduled service is due, in YYYY-MM-DD format.
- `taxDueDate` (string): Date the vehicle's road tax is next due, in YYYY-MM-DD format.
- `vin` (string): Vehicle Identification Number: a 17-character alphanumeric code unique to the vehicle.
- `year` (integer): Model year of the vehicle. Must be between 1900 and 2100.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_vehicle` (~448 tokens)

Partially update an existing vehicle's details; only the fields provided are changed, everything else is left as-is. For string and due-date fields, omitting the field leaves the stored value unchanged, while sending an empty string clears it.

Input parameters:

- `colour` (string): Colour of the vehicle. Omit to leave unchanged, or send an empty string to clear it.
- `id` (string, required): ID of the vehicle to update.
- `insuranceDocumentId` (string): Document ID of the associated insurance policy document. Omit to leave unchanged, or send an empty string to clear it.
- `make` (string): Manufacturer of the vehicle, e.g. 'Toyota'. Omit to leave unchanged, or send an empty string to clear it.
- `model` (string): Model name of the vehicle, e.g. 'Corolla'. Omit to leave unchanged, or send an empty string to clear it.
- `motDueDate` (string): Date the next MOT (roadworthiness test) is due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it.
- `notes` (string): Free-text notes about the vehicle. Omit to leave unchanged, or send an empty string to clear it.
- `registration` (string): The vehicle's registration/licence plate as shown on the plate. Free-text; format varies by country. Omit to leave unchanged, or send an empty string to clear it.
- `serviceDueDate` (string): Date the vehicle's next scheduled service is due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it.
- `taxDueDate` (string): Date the vehicle's road tax is next due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it.
- `vin` (string): Vehicle Identification Number: a 17-character alphanumeric code unique to the vehicle. Omit to leave unchanged, or send an empty string to clear it.
- `year` (integer): Model year of the vehicle. Must be between 1900 and 2100. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_vehicle` (~27 tokens)

Soft-delete a vehicle

Input parameters:

- `id` (string, required): ID of the vehicle to soft-delete.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_vehicles` (~16 tokens)

List all vehicles in the household

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_task` (~167 tokens)

Creates a new household task. Only title is required; the task starts unassigned and uncompleted. Use assign_task, update_task, or complete_task to change it afterward.

Input parameters:

- `assignedToMemberId` (string): The member ID of the household member. Get this from list_house_members.
- `dueDate` (string): The date the task is due, in YYYY-MM-DD format.
- `notes` (string): Freeform notes about the task. Not for assignment info.
- `preparationDate` (string): The date to start preparing for the task, in YYYY-MM-DD format. Must be on or before the due date if both are set.
- `title` (string, required): The task's title, e.g. 'Take out the recycling'. Required; max 200 characters.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_task` (~164 tokens)

Update task title, assignment, dates, or notes.

Input parameters:

- `assignedToMemberId` (string): Member ID to assign, or empty string to unassign. Omit to leave the current assignment unchanged.
- `dueDate` (string): YYYY-MM-DD format, or empty string to clear. Omit to leave unchanged.
- `id` (string, required): The task's ID, as returned by create_task or list_tasks.
- `notes` (string): Freeform notes about the task. Not for assignment info. Omit to leave unchanged.
- `preparationDate` (string): YYYY-MM-DD format, or empty string to clear. Omit to leave unchanged.
- `title` (string): New title for the task. Omit to leave unchanged; max 200 characters.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_task` (~59 tokens)

Soft-deletes a task: it stops appearing in list_tasks but the record is retained rather than permanently removed. Fails if the task was already deleted.

Input parameters:

- `id` (string, required): The task's ID, as returned by create_task or list_tasks.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `complete_task` (~56 tokens)

Marks a task as completed and records the completion for the household's momentum stats. Fails with a conflict if the task is already completed.

Input parameters:

- `id` (string, required): The task's ID, as returned by create_task or list_tasks.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `uncomplete_task` (~57 tokens)

Reopens a completed task, clearing its completion timestamp and completed-by user. Fails with a conflict if the task is not currently completed.

Input parameters:

- `id` (string, required): The task's ID, as returned by create_task or list_tasks.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `assign_task` (~72 tokens)

Assign or unassign a task to a household member.

Input parameters:

- `assignedToMemberId` (string): The member ID of the household member. Get this from list_house_members. Pass null or empty string to unassign.
- `id` (string, required): The task's ID, as returned by create_task or list_tasks.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_tasks` (~229 tokens)

Lists tasks in the household with optional filters (assignee, due-date range, completion status) and cursor-based pagination. Excludes completed tasks by default; results are sorted by due date ascending, with tasks that have no due date listed first.

Input parameters:

- `assignedToMemberId` (string): Filter to tasks assigned to this household member ID. Omit to include tasks for all assignees.
- `cursor` (string): Opaque pagination cursor from a previous list_tasks response's nextCursor. Omit to fetch the first page.
- `dueDateOnOrAfter` (string): Only include tasks with a due date on or after this date (YYYY-MM-DD). Tasks with no due date never match.
- `dueDateOnOrBefore` (string): Only include tasks with a due date on or before this date (YYYY-MM-DD). Tasks with no due date never match.
- `includeCompleted` (boolean): Whether to include completed tasks in the results. Default: false
- `limit` (integer): Maximum number of tasks to return per page. 1-100, default 50.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `get_weather_forecast` (~47 tokens)

Get weather forecast for the household's location

Input parameters:

- `forecastDays` (integer): Number of forecast days to return, from 1 to 5. Defaults to 3 if omitted.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `get_house` (~59 tokens)

Return full details for the household the current session is scoped to: name, address, invite code, notes, join settings, members, subscription status, and resolved feature-flag states. No parameters — the household is resolved server-side from the authenticated session.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_house_members` (~24 tokens)

List household members with their userId, name, nickname, and role.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_houses` (~44 tokens)

List the households the current user belongs to (e.g. to tell the user which home you are acting on). The active house is determined server-side from the authenticated session.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `get_profile` (~59 tokens)

Return the authenticated user's profile: name, email, AI-consent status, and timezone. Also records this call as user activity (bumps last-seen) as a side effect. No parameters — the user is resolved server-side from the authenticated session.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_shopping_list_items` (~20 tokens)

List all shopping list items in the household

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `add_shopping_list_item` (~206 tokens)

Add an item to the household's shopping list. A brand-new item gets a category auto-assigned from its name. If an unbought item with a matching name already exists, its quantity is merged into that item instead of creating a duplicate, keeping the existing item's category unchanged.

Input parameters:

- `name` (string, required): The name of the item to add, e.g. 'Milk' or 'Paper towels'. Maximum 200 characters. For a brand-new item, a category is auto-assigned from the name. If an unbought item with a matching name is alread…
- `quantity` (integer): How many of the item to add. Defaults to 1 if omitted. Minimum 1, maximum 9999. When merged into an existing unbought item, this is added to the existing quantity (capped at 9999).

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `buy_shopping_list_item` (~123 tokens)

Buy item (decrements quantity; removes at zero)

Input parameters:

- `id` (string, required): The ID of the shopping list item to buy, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items.
- `quantityToBuy` (integer): How many units to mark as bought. Defaults to 1. Minimum: 1, maximum 9999. If this meets or exceeds the item's remaining quantity, the item is fully bought and removed from the active list; otherwise…

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `get_house_review` (~70 tokens)

Return this week's pending House Review recommendations (data gaps like a missing appliance warranty date or vehicle MOT date), re-validated live so items already filled in, actioned, or superseded by an open task are dropped before they're returned. Pro-gated: fails if the household isn't on a Pro plan.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `defer_recommendation` (~53 tokens)

Add Later: defer a House Review recommendation and create a 7-day task

Input parameters:

- `recommendationId` (string, required): Id of a pending recommendation, taken from the id field of an item returned by get_house_review.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `skip_recommendation` (~46 tokens)

Skip: permanently suppress a House Review recommendation

Input parameters:

- `recommendationId` (string, required): Id of a pending recommendation, taken from the id field of an item returned by get_house_review.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `store_memory` (~136 tokens)

Store a long-term memory about the household. Use sparingly for durable preferences, routines, constraints, or insights worth recalling in a future conversation. Recall first to avoid duplicates.

Input parameters:

- `content` (string, required): Free-text body. Max 8000 chars.
- `description` (string, required): Single-line summary used to decide relevance later. Max 200 chars.
- `name` (string, required): Short kebab-case slug, e.g. 'preferred-cleaning-day'. Max 80 chars.
- `type` (string, required): Author of the memory. 'user' for things the user has stated; 'system' for stable insights you derived yourself.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_memory` (~98 tokens)

Update an existing memory's name, description, or content. Type is immutable; to reclassify, forget and store again.

Input parameters:

- `content` (string): Replacement body. Omit to leave unchanged.
- `description` (string): Replacement single-line summary. Omit to leave unchanged.
- `id` (string, required): Id from a prior recall_memory result.
- `name` (string): Replacement kebab-case slug. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `forget_memory` (~44 tokens)

Forget (soft-delete) a memory by id. Use when a memory is superseded or no longer relevant.

Input parameters:

- `id` (string, required): Id from a prior recall_memory result.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `recall_memory` (~138 tokens)

Recall long-term memories stored about the current household. Call this at the start of advisory or open-ended turns. Filter by type when only one author's notes are relevant.

Input parameters:

- `cursor` (string): Pagination cursor: pass back the nextCursor value from a prior recall_memory response to fetch the next page. Omit to start from the first page.
- `limit` (integer): Max number of memories to return in this page. 1-100, default 20.
- `type` (string): Optional filter: 'system' for memories you (the agent) wrote, 'user' for memories the user stated. Omit to return both.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_meal_plan` (~208 tokens)

Plan a meal for a specific date and meal type. Provide recipeId to link an existing recipe (from list_recipes) OR name for a custom meal; when recipeId is given any name is ignored and stored as null.

Input parameters:

- `date` (string, required): Date of the planned meal (format: YYYY-MM-DD). Must be from today up to four weeks ahead.
- `mealType` (string, required): Which meal slot of the day this entry occupies
- `name` (string): Custom meal name when no recipe is linked
- `notes` (string): Optional free-text notes about the planned meal
- `recipeId` (string): ID of an existing recipe (from list_recipes or list_global_recipes)
- `recipeSource` (string): Set 'global' when recipeId refers to a Discover/global recipe (from list_global_recipes); defaults to 'household'
- `servings` (integer): Number of servings for the planned meal. Between 1 and 100

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_meal_plan` (~261 tokens)

Update a meal plan entry. Any field left out keeps its current value. Provide recipeId to link a recipe (clears any custom name) or name to make it a custom meal (clears the recipe link); recipeId takes precedence when both are given.

Input parameters:

- `date` (string): Date of the planned meal (format: YYYY-MM-DD). Must be from today up to four weeks ahead. Omit to leave unchanged.
- `id` (string, required): ID of the meal plan entry to update (from list_meal_plans)
- `mealType` (string): Which meal slot of the day this entry occupies. Omit to leave unchanged.
- `name` (string): Custom meal name when no recipe is linked
- `notes` (string): Optional free-text notes about the planned meal. Omit to leave unchanged.
- `recipeId` (string): ID of an existing recipe (from list_recipes or list_global_recipes)
- `recipeSource` (string): Set 'global' when recipeId refers to a Discover/global recipe (from list_global_recipes); defaults to 'household'
- `servings` (integer): Number of servings for the planned meal. Between 1 and 100. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_meal_plan` (~70 tokens)

Remove a planned meal from the household's meal plan. This is a soft delete: the entry stops appearing in list_meal_plans and its date/meal-type slot becomes free again.

Input parameters:

- `id` (string, required): ID of the meal plan entry to delete (from list_meal_plans)

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_meal_plans` (~73 tokens)

List meal plans in the household with an optional date range

Input parameters:

- `from` (string): Inclusive date range start (format: YYYY-MM-DD). Omit for an open-ended start.
- `to` (string): Inclusive date range end (format: YYYY-MM-DD). Omit for an open-ended end.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_recipe` (~135 tokens)

Create a new recipe in the household's recipe collection, with optional ingredients, source URL, instructions and serving size. Link it to a date with create_meal_plan, or browse it later with list_recipes.

Input parameters:

- `ingredients` (array): Optional list of ingredients required for the recipe
- `instructions` (string): Optional free-text cooking instructions/method
- `name` (string, required): Recipe name/title
- `servings` (integer): Number of servings the recipe yields. Minimum: 1
- `url` (string): Optional source URL the recipe was found at (e.g. a link to a blog or recipe site)

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_recipe` (~177 tokens)

Update an existing recipe. Only the fields provided are changed; any field left out keeps its current value. Providing ingredients replaces the entire ingredient list rather than merging with the existing one.

Input parameters:

- `id` (string, required): ID of the recipe to update (from list_recipes)
- `ingredients` (array): List of ingredients required for the recipe. Providing this replaces the entire existing ingredient list rather than merging with it. Omit to leave the ingredients unchanged.
- `instructions` (string): Free-text cooking instructions/method. Omit to leave unchanged.
- `name` (string): Recipe name/title. Omit to leave unchanged.
- `servings` (integer): Number of servings the recipe yields. Minimum: 1. Omit to leave unchanged.
- `url` (string): Source URL the recipe was found at. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_recipe` (~78 tokens)

Delete a recipe from the household's collection. This is a soft delete; any meal plan entries still linked to this recipe are automatically converted into custom entries that keep a snapshot of its name, ingredients and instructions, so they aren't left with a dangling recipe link.

Input parameters:

- `id` (string, required): ID of the recipe to delete (from list_recipes)

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_recipes` (~16 tokens)

List all recipes in the household

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `list_global_recipes` (~26 tokens)

List the global/Discover recipe catalogue (curated recipes available to all households)

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `batch_add_shopping_list_items` (~50 tokens)

Add multiple items to the shopping list at once

Input parameters:

- `items` (array, required): List of items to add to the shopping list in a single call. Up to 25 items per call.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_shopping_list_item` (~177 tokens)

Update a shopping list item's name, quantity, and/or category. Only the fields provided are changed; any field left out keeps its current value.

Input parameters:

- `category` (string): New store-aisle category for the item, overriding any auto-assigned category. Omit to leave the current category unchanged.
- `id` (string, required): The ID of the shopping list item to update, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items.
- `name` (string): New name for the item. Maximum 200 characters. Omit to leave the current name unchanged.
- `quantity` (integer): New quantity for the item, replacing (not adding to) the current quantity. Minimum 1, maximum 9999. Omit to leave the current quantity unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `remove_shopping_list_item` (~83 tokens)

Remove an item from the household's shopping list without marking it as bought. This soft-deletes the item so it no longer appears in list_shopping_list_items.

Input parameters:

- `id` (string, required): The ID of the shopping list item to remove, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_recurring_calendar_event` (~456 tokens)

Create a recurring calendar event that automatically generates event instances on a schedule.

Input parameters:

- `cronExpression` (string, required): Recurrence interval, NOT a cron expression despite the field name. Format is 'N Unit' where N is a positive integer and Unit is one of Day, Week, Month, Year (case-sensitive), e.g. '1 Day', '2 Week',…
- `description` (string): Longer free-text description applied to every generated instance. Up to 2000 characters.
- `duration` (string): Length of each instance, in ISO 8601 duration format.
- `endDate` (string): Last date on which instances may occur, YYYY-MM-DD format. Omit for no end date (bounded only by maxOccurrences, if set).
- `isAllDay` (boolean): True if generated instances are all-day events with no specific start/end time; false for timed instances.
- `location` (object): Location applied to every generated instance. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes).
- `maxOccurrences` (integer): Maximum number of instances to generate before recurrence stops. Omit for unlimited (bounded only by endDate, if set).
- `notes` (string): Freeform notes applied to every generated instance. Up to 5000 characters.
- `startDate` (string): Anchor date the recurrence is calculated from, YYYY-MM-DD format. The first instance falls on this date (subject to startTime/timezone); later instances are startDate plus multiples of the cronExpres…
- `startTime` (string): Time of day each instance starts, in HH:mm:ss format (local to timezone). Omit for an event with no fixed time.
- `timezone` (string|null): IANA timezone id (e.g. 'Europe/London') that startTime is in. Each generated occurrence's UTC instant respects this zone's DST.
- `title` (string, required): Event title/summary applied to every generated instance. Required, up to 200 characters.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_recurring_calendar_event` (~635 tokens)

Update a recurring calendar event. Changes to title/description/notes patch existing instances. Changes to frequency/dates/time regenerate future instances.

Input parameters:

- `cronExpression` (string): New recurrence interval, NOT a cron expression despite the field name. Format is 'N Unit' where N is a positive integer and Unit is one of Day, Week, Month, Year (case-sensitive), e.g. '1 Day', '2 We…
- `description` (string): New longer free-text description. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 2000 characters.
- `duration` (string): New length of each instance, in ISO 8601 duration format. Omit to leave unchanged. Changing this deletes and regenerates future instances.
- `endDate` (string): PATCH-style date field: omit or send null to leave the stored end date unchanged, send an empty string to clear it (recurrence becomes unbounded by date), or send 'YYYY-MM-DD' to set a new last occur…
- `id` (string, required): Id of the recurring calendar event (template) to update.
- `isAllDay` (boolean): True if generated instances are all-day events; false for timed instances. Omit to leave unchanged. Changing this deletes and regenerates future instances.
- `location` (object): New location, replacing the existing one entirely. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Set $type to 'Address' for…
- `maxOccurrences` (integer): New maximum number of instances to generate. Omit to leave unchanged. Changing this deletes and regenerates future instances.
- `notes` (string): New freeform notes. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 5000 characters.
- `startDate` (string): PATCH-style date field: omit or send null to leave the stored start date unchanged, send an empty string to clear it, or send 'YYYY-MM-DD' to set a new anchor date. Changing this deletes and regenera…
- `startTime` (string): New time of day each instance starts, in HH:mm:ss format (local to timezone). Omit to leave unchanged. Changing this deletes and regenerates future instances.
- `timezone` (string|null): IANA timezone id (e.g. 'Europe/London') that startTime is in. Omit to leave unchanged; null resets to UTC. Changing this regenerates instances.
- `title` (string): New event title/summary. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 200 characters.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_recurring_calendar_event` (~40 tokens)

Delete a recurring calendar event and all its future instances.

Input parameters:

- `id` (string, required): Id of the recurring calendar event (template) to delete.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `create_recurring_task` (~294 tokens)

Create a recurring task that automatically generates task instances on a schedule.

Input parameters:

- `assigneeRotation` (array): Ordered list of household member IDs to round-robin through, one per generated instance. Entries that are no longer valid house members are skipped and that instance is left unassigned.
- `cronExpression` (string, required): Recurrence frequency expression in the format 'N Unit', e.g. '2 Week' for every two weeks. Unit must be exactly Day, Week, Month, or Year (case-sensitive). Despite the parameter name, this is not cro…
- `endDate` (string): The last date instances are generated through (inclusive), in YYYY-MM-DD format. Omit for an open-ended schedule.
- `maxOccurrences` (integer): Maximum number of task instances to generate in total. Generation stops once this many instances have been created, even if endDate has not been reached.
- `notes` (string): Freeform notes copied to every generated task instance.
- `preparationDays` (integer): Number of days before each occurrence's due date to set that instance's preparation date. Clamped to today if the computed date would be in the past.
- `startDate` (string): The date the schedule starts generating instances from, in YYYY-MM-DD format. Defaults to today if omitted.
- `title` (string, required): The recurring task's title. Used as the title for every generated task instance.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `update_recurring_task` (~415 tokens)

Update a recurring task. Title/notes changes patch existing instances; frequency/date changes regenerate future instances.

Input parameters:

- `assigneeRotation` (array): New ordered list of household member IDs to round-robin through, replacing the existing rotation entirely. Applies to instances generated after this change; already-created instances are unaffected.…
- `cronExpression` (string): New recurrence frequency expression in the format 'N Unit', e.g. '2 Week' for every two weeks. Unit must be exactly Day, Week, Month, or Year (case-sensitive). Despite the parameter name, this is not…
- `endDate` (string): New end date for the schedule (inclusive), in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string for an open-ended schedule. Changing this regenerates future uncompleted instances.
- `id` (string, required): The recurring task's ID, as returned by create_recurring_task or list_recurring_tasks.
- `maxOccurrences` (integer): New maximum total number of instances to generate. Changing this regenerates future uncompleted instances.
- `notes` (string): New notes for the template, copied to existing uncompleted generated instances. Omit to leave unchanged.
- `preparationDays` (integer): Number of days before each occurrence's due date to set that instance's preparation date. Only affects instances generated after this change; existing uncompleted instances keep their original prepar…
- `startDate` (string): New start date for the schedule, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it. Changing this regenerates future uncompleted instances.
- `title` (string): New title for the template. Existing uncompleted generated instances are updated to match; completed ones keep their original title. Omit to leave unchanged.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

### `delete_recurring_task` (~47 tokens)

Delete a recurring task and all its uncompleted future instances.

Input parameters:

- `id` (string, required): The recurring task's ID, as returned by create_recurring_task or list_recurring_tasks.

Output parameters:

- `items` (array)
- `message` (string)
- `title` (string)
- `variant` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-onehaus-haus/mcp#diagnostics

## Score history

- 2026-08-03: 84
- 2026-08-02: 84
- 2026-08-01: 83
- 2026-07-31: 83
- 2026-07-30: 77
- 2026-07-29: 79
- 2026-07-28: 79
- 2026-07-27: 78
- 2026-07-26: 77

## Links

- Remote endpoint: https://mcp.onehaus.app/
- Repository: https://github.com/Im5tu/haus
- Website: https://onehaus.app/
- Changelog RSS feed: https://verifymcp.io/servers/app-onehaus-haus/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-onehaus-haus/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/app-onehaus-haus/mcp
