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 agent
POST https://frontlatch.com/mcp
  • find_business
  • list_actions
  • describe_action
  • do
  • request_status
  • respond_to_quote
  • cancel_request
  • reschedule_request
  • inspect_site
  • read_page
  • do_action
  • setup_frontlatch

Three stops to a verified request

  1. 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_action

  2. Ask 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.

    do

  3. Settle 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
#ToolWhat it answersWorks onMode
01 / On the index
01find_business (query)Businesses that match, each with its action kindsindexread only
02list_actions (business)Book, quote, call, contact: what one business can takeindexread only
03describe_action (kind)One action in detail and whether it is callableindexread only
04do (action, request)Sends the owner a job card, or refuses and names the missing stepindexowner gated
05request_status (requestId)pending, accepted, declined, quoted or expiredindexread only
06respond_to_quoteAccept or decline the owner's quoteindexuser_confirmed
07cancel_requestWithdraw a request the owner has not answeredindexuser_confirmed
08reschedule_requestAsk the owner for a new time on an agreed jobindexuser_confirmed
02 / On any website
09inspect_site (url)The forms, search and links a site exposesany siteread only
10read_page (url)A page as text, hidden text stripped, provenance attachedany siteread only
11do_action (url, action)Fills a form and stops. Nothing is submittedany sitedry run
03 / Guided setup
12setup_frontlatch (operation)Guided account and WordPress setup with explicit browser approvalsetupowner gated

Attach calls to your account: add frontlatch.com/mcp/auth as a custom connector in Claude or ChatGPT.Full request and reply samples: developer quickstart

The index behind find_business

service sites scanned · updated nightly

79,080LIVE · scanned

Let an agent book today16%
callable12,288
needs help62,502
no way in4,290
indexed118,525
as of 22 Oct 2026source: /api/index-stats

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.

Frontlatch strips hidden and invisible text and caps lengths. It flags rather than blocks, and it cannot judge text hidden by a style sheet. The security page lists what is stripped and what is not caught.

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

request sent via Frontlatch

Pending

Leaking tap, Newtown

Thursday morning

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.

Building an agent? The developer reference has the samples for all twelve tools.