Tinyhat Chores

Get home-service chores done with less back-and-forth and fewer questions for your human user.

These guides follow the AI Agent Manifesto.

MCP reference

Streamable HTTP endpoint: https://tinyhat.ai/chore/mcp. Initialize with an MCP client. Use search_home_service_guides and read_home_service_guide to read home-service guides without signing in. use_model=true requires explicit permission to send only query and city/region to OpenAI Decisions. Never include personal details or credentials in searches.

Delegation, status, cancellation and file removal require a verified Tinyhat owner session. When configured, native ChatGPT clients connect through the secure email-code authorization window; coding clients reuse existing transport authentication. Never put codes or tokens into chat or tool arguments. Installing a plugin does not grant that session. Sharing a file also needs permission for the exact file and Tinyhat team/Slack audience. PENDING is not acceptance; poll by ID and deadline. Only a verified authorized Slack approver can approve. These tools cannot approve, book, pay or claim physical service. Approval activation and host authentication require release verification.

API reference

search_home_service_guides

Find home-service preparation guides matching a task and city or region. Use when arranging help such as furnace servicing or a drain assessment. Returns up to ten guide paths and summaries, not provider listings or quotes. No sign-in is needed. Default search matches Tinyhat's catalogue without a model call. use_model=true sends ONLY query/location to OpenAI Decisions and requires the user's permission first. Do not include personal details, credentials or an address in the search.

{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "location": {
      "default": "",
      "title": "Location",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "use_model": {
      "default": false,
      "title": "Use Model",
      "type": "boolean"
    }
  },
  "required": [
    "query"
  ],
  "title": "search_home_service_guidesArguments",
  "type": "object"
}

read_home_service_guide

Read a home-service preparation guide for a service and location. Use a path returned by search_home_service_guides. Returns the exact Markdown guide: what to ask, information to gather and local context. No sign-in is needed. This does not find, contact or book providers.

{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "read_home_service_guideArguments",
  "type": "object"
}

get_delegation_status

Read your existing delegation's authoritative decision and deadline. Requires the same owner's existing Tinyhat bearer session in the HTTP Authorization header. Poll PENDING about every 10 seconds, at the deadline and after an uncertain response. Never infer a decision from elapsed time or a failed read. This tool cannot approve or expose a job file.

{
  "properties": {
    "delegation_id": {
      "format": "uuid",
      "title": "Delegation Id",
      "type": "string"
    }
  },
  "required": [
    "delegation_id"
  ],
  "title": "get_delegation_statusArguments",
  "type": "object"
}

cancel_delegation

Cancel your pending delegation. Approved coordination needs an agreed handback. Cancellation cannot recall a file already sent to Slack. Read this same ID after an uncertain response. No provider booking or payment is cancelled.

{
  "properties": {
    "delegation_id": {
      "format": "uuid",
      "title": "Delegation Id",
      "type": "string"
    }
  },
  "required": [
    "delegation_id"
  ],
  "title": "cancel_delegationArguments",
  "type": "object"
}

delete_delegation_content

Permanently remove your backend job file and service/location labels. Confirm this irreversible removal with the user. Pending delegation is cancelled; approved coordination remains owned by Tinyhat until agreed handback. Prior Slack copies may remain under workspace retention. The decision/hash/retry record stays to prevent duplicate work.

{
  "properties": {
    "delegation_id": {
      "format": "uuid",
      "title": "Delegation Id",
      "type": "string"
    }
  },
  "required": [
    "delegation_id"
  ],
  "title": "delete_delegation_contentArguments",
  "type": "object"
}

submit_delegation

Ask Tinyhat to take over provider finding using an exact authorized file. Requires the existing owner's bearer session in the HTTP Authorization header, plus permission to share this file/service/city with Tinyhat's internal team and Slack audience. Keep credentials, unrelated history, access codes and unnecessary precise locations out. Save the retry key BEFORE submission; reuse it with identical input after a lost response. PENDING is not acceptance. Poll get_delegation_status by the returned ID/deadline. APPROVED transfers provider coordination only; stop new parallel pursuit and reconcile inquiries. No booking/payment authority.

{
  "properties": {
    "service_needed": {
      "description": "Service needed for the user's property, without unrelated personal details, links or mentions.",
      "examples": [
        "Furnace servicing"
      ],
      "maxLength": 150,
      "minLength": 1,
      "title": "Service Needed",
      "type": "string"
    },
    "location": {
      "description": "User-specified service city/region, not the device's location. Keep street addresses and access codes out of this label; include necessary property details only in the exact authorized file.",
      "examples": [
        "Winnipeg, Manitoba"
      ],
      "maxLength": 150,
      "minLength": 1,
      "title": "Location",
      "type": "string"
    },
    "filename": {
      "description": "Name of the exact authorized .md, .txt or .json job file.",
      "examples": [
        "furnace-service.md"
      ],
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,90}\\.(?:md|txt|json)$",
      "title": "Filename",
      "type": "string"
    },
    "content": {
      "description": "Exact user-authorized provider-ready file, nonblank UTF-8 text up to 64 KiB in bytes; no secrets, binary controls or unrelated history. JSON files must be valid JSON.",
      "examples": [
        "Furnace service request: inspect the reported startup issue."
      ],
      "maxLength": 65536,
      "minLength": 1,
      "pattern": "\\S",
      "title": "Content",
      "type": "string"
    },
    "idempotency_key": {
      "description": "Save before submission. Reuse with the same exact file after uncertainty; 8-80 letters, digits, dots, underscores or hyphens. Never use a credential.",
      "examples": [
        "furnace-request-001"
      ],
      "maxLength": 80,
      "minLength": 8,
      "pattern": "^[A-Za-z0-9_.-]{8,80}$",
      "title": "Idempotency Key",
      "type": "string"
    },
    "share_with_team": {
      "const": true,
      "description": "Must be the boolean true, with explicit permission to share this exact file, service and city with Tinyhat's existing internal team and Slack audience. Does not authorize booking or payment.",
      "title": "Share With Team",
      "type": "boolean"
    }
  },
  "required": [
    "service_needed",
    "location",
    "filename",
    "content",
    "idempotency_key",
    "share_with_team"
  ],
  "title": "submit_delegationArguments",
  "type": "object"
}

open_tiny_chores

Use when opening Tiny Chores from the sidebar. Shows recent owned chores or an anonymous empty state. Read-only; create or change chores through chat.

{
  "properties": {},
  "title": "open_tiny_choresArguments",
  "type": "object"
}

list_my_chores

Use when refreshing Tiny Chores' latest twenty owned delegations. Requires a verified owner session; never creates, changes or shares a chore.

{
  "properties": {},
  "title": "list_my_choresArguments",
  "type": "object"
}

get_my_chore

Use when opening a listed chore's read-only details and ID. Requires its owner's verified session. Cannot approve, cancel or edit chores.

{
  "properties": {
    "chore_id": {
      "description": "Chore ID returned by list_my_chores; only the current owner's chore can be read.",
      "format": "uuid",
      "title": "Chore Id",
      "type": "string"
    }
  },
  "required": [
    "chore_id"
  ],
  "title": "get_my_choreArguments",
  "type": "object"
}

Example

search_home_service_guides {"query":"Find someone to service my furnace", "location":"Winnipeg", "limit":10}
read_home_service_guide {"path":"furnace-maintenance/canada/mb/winnipeg"}

Fetch a path returned by search. The Hat bytes match the plain MD and API response. Agent clients use the HTTPS endpoint above. Browser requests use the Tinyhat same-origin endpoint; local development also allows loopback origins.