Products / Gateway
AI can book real businesses.
Nothing runs until the owner says yes.
A customer asks their AI for a plumber. The AI asks Frontlatch. You get a job card, and nothing happens until you tap Accept.
Building an AI tool? Connect it below.
- Agent
- Frontlatch
- Owner
- Refused, nothing runs
One request · not to scale
For developers
Connect your agent
One address gives your agent every tool below. Sandbox is the default, and a real request only reaches an owner who has opened that action.
Connect your agentPOST https://frontlatch.com/mcpfind_businesslist_actionsdescribe_actiondorequest_statusrespond_to_quotecancel_requestreschedule_requestinspect_siteread_pagedo_actionsetup_frontlatch
Three stops to a verified request
Find the business and what it can take
Search the index, list the actions on one business, check a single kind. All read only.
find_businesslist_actionsdescribe_actionAsk once, through the door
One call sends the owner a job card. If that action is shut, the call is refused and says who to reach instead.
doSettle it with the owner’s answer
Poll the status, answer a quote, withdraw or move a job. The user says yes in their own chat each time.
request_statusrespond_to_quotecancel_requestreschedule_request
Fig. 02 · The tools
Twelve tools. One endpoint.
eight work on the business index. three read or dry-run any website. A separate setup tool guides account and WordPress approval. Website content arrives marked untrusted.
POST https://frontlatch.com/mcpMCP registry com.frontlatch/gateway| # | Tool | What it answers | Works on | Mode |
|---|---|---|---|---|
| 01 / On the index | ||||
| 01 | find_business (query) | Businesses that match, each with its action kinds | index | read only |
| 02 | list_actions (business) | Book, quote, call, contact: what one business can take | index | read only |
| 03 | describe_action (kind) | One action in detail and whether it is callable | index | read only |
| 04 | do (action, request) | Sends the owner a job card, or refuses and names the missing step | index | owner gated |
| 05 | request_status (requestId) | pending, accepted, declined, quoted or expired | index | read only |
| 06 | respond_to_quote | Accept or decline the owner's quote | index | user_confirmed |
| 07 | cancel_request | Withdraw a request the owner has not answered | index | user_confirmed |
| 08 | reschedule_request | Ask the owner for a new time on an agreed job | index | user_confirmed |
| 02 / On any website | ||||
| 09 | inspect_site (url) | The forms, search and links a site exposes | any site | read only |
| 10 | read_page (url) | A page as text, hidden text stripped, provenance attached | any site | read only |
| 11 | do_action (url, action) | Fills a form and stops. Nothing is submitted | any site | dry run |
| 03 / Guided setup | ||||
| 12 | setup_frontlatch (operation) | Guided account and WordPress setup with explicit browser approval | setup | owner gated |
The index behind find_business
service sites scanned · updated nightly
79,080LIVE · scanned
Fig. 03 · What a page says
Nothing a website says is an instruction.
Text from read_page, inspect_site and the index tools was written by a website. Each result opens with a notice, where it came from and when, and flags any text that reads like an order to you.
read_page · reply{ "untrustedContent": true, "untrustedProvenance": { "source": "https://example.com.au/hours", "fetchedAt": "…" }, "injectionSuspected": false, "injectionFlags": [], "title": "Opening hours", "text": "Mon to Fri, 8am to 5pm", "blocked": false, "unreachable": false, "emptyReason": null } // blocked: robots.txt said no. unreachable: DNS, timeout or non-2xx. // Hidden text is dropped before this is built.
Stripped
Hidden and invisible text
Dropped before the reply is built. Lengths are capped.
Flagged, not blocked
Text that reads like an order
injectionFlags names it. You decide; it stays data.
Only the user
Confirms a request
Nothing a site says can answer do’s confirmation.
Outcomes
One call. Every outcome named.
Nothing fails silently: the reply names what happened, and request_status carries the owner’s answer back.
- AcceptedAccepted: owner tapped Accept. Verified, then counted.
- QuotedQuoted: amount, slot and note. Answer with respond_to_quote.
- Declined, expiredDeclined or expired: no card in the chat, nothing billed.
- Refused, not verifiedRefused: authorised false, with website and phone.
The door answers
Three questions, in plain words.
01
What does this business do?
A plain list: call, book, request a quote. And which ones are open.
02
Can I book it?
Only if the owner opened that action. Otherwise no, and how to reach them.
03
Who do I contact instead?
The website and phone the owner already publishes.
In the chat
A receipt the user can see.
What the chat shows
Aussie Home Services
Leaking tap, Newtown
Sign-ups, off by default
- Owner switches it on; user says yes in chat.
- A password or CAPTCHA stops it.
- A page saying created is never billed.
Open your door
Find your business. Choose which actions to open.
See what AI sees on your site today, then open a door one action at a time.