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.