For AI agents · MCP + REST
Ask for a human.
Let them decide.
When a coding agent hits something it shouldn't handle alone (production down, a leaked secret, open database rules, nobody knows who owns the domain), it can ask Housekeep for a real engineer. The human it works for confirms by email. Then we take it from there.
MCP
https://housekeep.io/mcp
REST
https://housekeep.io/api/v1
Discovery
https://housekeep.io/.well-known/mcp.json
How it works
-
1
Agent asks
Calls request_engineer with the URL, what's wrong, what it tried, and who it works for.
-
2
We quote
Same prepared quote as the web form, with a reference. No immediate payment.
-
3
Human confirms
We email the principal. They confirm and authorise the work in writing.
-
4
Engineer on it
Status updates by polling or webhook. The report goes to the human, and to the agent if they allow it.
Connect
Add the MCP server to your agent. No API key needed while requests are confirmed by email.
{
"mcpServers": {
"housekeep": {
"type": "http",
"url": "https://housekeep.io/mcp"
}
}
}
Or call the REST API
curl -X POST https://housekeep.io/api/v1/requests \
-H "Content-Type: application/json" \
-d '{"url":"https://myapp.com","problem":"400 paying users, investor due diligence next month. Nobody has reviewed security or backups.","urgency":"planning","principal":{"name":"Ada Lovelace","email":"[email protected]","company":"MyApp Ltd","country":"GB"}}'
Tools
| get_quote | Price a job for your principal. Returns the prepared quote. | Free |
| request_engineer | Ask for a human engineer. Emails your principal to confirm. | Invoiced to the principal after they confirm |
| check_request | Status and timeline. | Free |
| get_report | Report summary, if your principal chose to share it with you. | Free |
Statuses
Or declined_by_principal, or expired after 14 days without confirmation.
Example: request_engineer
→ POST /mcp
{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "request_engineer",
"arguments": {
"url": "https://myapp.com",
"problem": "400 paying users, investor due diligence next month. Nobody has reviewed security or backups.",
"urgency": "planning",
"package": "move_in_inspection",
"currency": "gbp",
"context": {
"what_agent_tried": "Listed env vars and services it can see; ownership of the domain is unclear."
},
"principal": {
"name": "Ada Lovelace",
"email": "[email protected]",
"company": "MyApp Ltd",
"country": "GB"
},
"share_report_with_agent": true,
"client_name": "acme-coding-agent/1.4"
}
}
}
← result.structuredContent
{
"request_id": "req_7Hq2kD",
"quote": {
"reference": "HK-00042",
"lines": [
{
"label": "Move-in Inspection",
"amount": 499
}
],
"total": "£499",
"valid_until": "2026-10-21",
"timeline": "Report within a week of access"
},
"status": "awaiting_principal",
"next": "We emailed [email protected] to confirm. No work starts until they do.",
"poll": {
"tool": "check_request",
"after_seconds": 300
}
}
House rules for agents
The principal is the client.
Every request names a real person with an email. They confirm before any work, and they're the one we invoice.
Never send credentials.
Requests containing anything that looks like a password, key or token are rejected (422 secret_detected) and not stored.
Hands off until confirmed.
We don't touch the app until the principal confirms and authorises the work in writing.
Reports belong to the human.
get_report returns 403 not_shared unless the principal ticked "share with my agent".
Be gentle.
30 calls a minute per IP, 5 engineer requests an hour per principal.
What your human receives
To: [email protected]
Subject: Your coding agent asked Housekeep for an engineer (HK-00042)
Hi Ada,
acme-coding-agent asked us for a human engineer for myapp.com:
400 paying users, investor due diligence next month. Nobody has reviewed security or backups.
Quote HK-00042: Move-in Inspection, £499. No immediate payment.
Didn't expect this? Ignore it. Nothing happens unless you confirm, and the request expires in 14 days.