Local services · Cavite
Know who
to call.
A plumber for the leak. A technician for the aircon. Tell your AI assistant what needs fixing — KayIdol connects it to local tradespeople, clear prices and a time that works for you.
Plumber, electrician or local service business?
Join the first cohort. We’ll help you get listed by email.

Cavite dry run · AI-generated service scene.
- Free
- while we are in beta. No commission, no listing fee, no cut.
- No account
- needed to book. Your assistant is the interface.
- 12 months
- more at 0% for providers who list now, once charging begins.
- 8 trades
- across Cavite, priced in PHP.
Free now. And free for a year after that, if you join now.
KayIdol is not taking money yet, and that is a decision rather than a missing feature: this release exists to find out whether people want this and where there are not enough tradespeople to answer. Charging for it would answer neither question.
During the beta, nobody pays us
No commission, no listing fee, no charge for verification. KayIdol is not in the money flow at all — the customer settles directly with the provider, on the day, however the two of you agree, so there is nothing for us to take a cut of and nothing to refund if a job falls through.
- A ₱1,500.00 job
- ₱1,500.00
- Customer pays
- ₱1,500.00
- KayIdol takes
- ₱0.00
- Provider keeps
- ₱1,500.00
Founding provider
List during the beta and you keep 0% commission for twelve months after charging begins — not a discount off it, none of it. After that the commission is 7% of the job total, deducted from the provider's payout and never added to the customer's bill — which is why the customer's column does not move between these two tiles.
- A ₱1,500.00 job
- ₱1,500.00
- Customer pays
- ₱1,500.00
- KayIdol takes
- ₱105.00
- Provider keeps
- ₱1,395.00
Four steps, and you are in exactly one of them.
The other three happen between your assistant, KayIdol and the tradesperson while you get on with your day.
-
Ask
You describe the problem to whichever assistant you already use. No app to install, no KayIdol account, no password.
-
Match
KayIdol resolves what you said to a real service, filters to providers who cover your area and are genuinely free at that hour, and ranks them on completed work rather than ad spend.
-
Confirm
Your assistant checks the choice with you, then holds the slot and fixes the price. Nothing is charged — during the beta nothing ever is.
-
Accept
The provider receives an email with a single-use invitation code, opens the job portal and answers. Their yes is what turns a held slot into a booking, and you settle up with them directly on the day.

A little help, close to home
“Our kitchen sink is backed up. Can someone come this afternoon?”
Kitchen sink. Sorted.
Drain unclogging · Cavite
- Arrival
- Today, 2pm
- Quoted total
- ₱1,200
Provider acceptance required
Follow the example booking
-
Our kitchen sink is backed up. Can someone come out this afternoon?
-
POST /v1/search — drain_unclogging, near Cavite, today after 13:00
-
3 providers · identity-verified · 14:00–17:00 open · ₱800–₱1,500 · rated 4.6–4.9
-
Ramon can be there at 2pm, ₱1,200 all in. Shall I book him?
-
POST /v1/booking-intents/{bookingIntentId}/confirm
-
next_step: AWAIT_PROVIDER — Ramon has been sent the job. It is a booking when he accepts it, and not before.
Every endpoint in this exchange is deployed and answering today; the
table under For agents is generated from the API's own description.
What happens after the confirm call depends on one operator setting, so read
booking.confirmed_by from capabilities rather than this
panel.
Stop reading twenty listings.
The part of hiring a tradesperson that wastes your evening is not the work. It is the twelve open tabs, the unanswered messages and the price you only learn after someone arrives.

No account, ever
A booking needs a name, a number and an address. Not a profile. We keep no consumer login because there is nothing we would do with one.
The quote is the price
Right now KayIdol takes nothing at all and never handles your money — you pay the tradesperson directly. When we do start charging, the commission comes off their side, so the number your assistant quotes stays the number you pay.
Ratings from real jobs
Only a completed booking can leave a review, so reputation is tied to work that actually happened. Ranking is never for sale.
Get discovered by AI.
People are starting to ask ChatGPT, Claude and Gemini for a plumber instead of scrolling a Facebook group. When they do, your business needs to be something those assistants can actually find, price and book.

Free now, and free for a year after
Nothing is deducted during the beta, because KayIdol never touches the payment — the customer pays you. List now and you keep 0% for 12 months after charging starts.
You set the terms
Your services, your rates, your coverage area, your working hours. KayIdol never quotes on your behalf outside the bands you set, and no job becomes yours until you have said yes to it.
Paid the way you already get paid
During the beta the customer settles with you directly, in cash or through whichever e-wallet you both use. Nothing to reconcile, no payout to wait for, no account to open.
Real-world services as an API.
Search. Quote. Hold. Confirm. One base URL, an OpenAPI 3.1 description, and —
when it ships — an MCP server. Integer minor units, UUIDv7 identifiers, ISO 8601
timestamps, machine-readable error codes, and an Idempotency-Key required on
every mutation.
curl https://api.kayidol.com/v1/meta/capabilities
# Read this before your first booking call. It is the only thing that
# will tell you what confirms a booking on THIS deployment — today
# booking.confirmed_by is PROVIDER_ACCEPTANCE and
# payments.platform_collects is false. Both are operator settings.
curl https://api.kayidol.com/v1/agent/surface
# The tools this gateway exposes to an external agent. Today: none —
# and it says so, rather than describing tools that do not exist.
| Method | Path | Summary | State |
|---|---|---|---|
| GET | /health | Liveness probe | Live |
| GET | /ready | Readiness probe — checks Postgres and Redis | Live |
| GET | /v1/agent/surface | Tools this gateway exposes to an external agent | Live |
| POST | /v1/booking-intents | Hold a slot and fix a price, without charging anything | Live |
| GET | /v1/booking-intents/{bookingIntentId} | Read a booking intent back | Live |
| POST | /v1/booking-intents/{bookingIntentId}/cancel | Give the slot back before anything has been charged | Live |
| POST | /v1/booking-intents/{bookingIntentId}/confirm | Confirm a booking intent, once the human has said yes | Live |
| GET | /v1/bookings/{bookingId} | Read a confirmed booking | Live |
| POST | /v1/bookings/{bookingId}/cancel | Cancel a confirmed booking, settling it per the policy | Live |
| GET | /v1/bookings/{bookingId}/cancellation-preview | What cancelling would cost, changing nothing | Live |
| GET | /v1/meta/capabilities | What this deployment can do, and the rules it enforces | Live |
| POST | /v1/providers/{providerId}/availability | When this provider can actually do this job | Live |
| POST | /v1/quotes | Fix a price for one job with one provider | Live |
| GET | /v1/quotes/{quoteId} | Read a quote back | Live |
| POST | /v1/quotes/{quoteId}/accept | Fix this price so a booking can be built on it | Live |
| POST | /v1/search | Find providers who can do a job, ranked on merit | Live |
MCP Deployment pending
An MCP server at https://mcp.kayidol.com/mcp, implements 13 tools and forwards KayIdol API keys and booking capability tokens.
Public deployment is pending; OAuth is not implemented. Additional planned tools:
- get_provider
Read the deployment, not the brochure
Two settings decide what this marketplace does with money and what turns a held slot
into a booking, and an operator can change both without a deploy. So every rule below
names the capability field that answers it, and the only correct way to know is to call
/v1/meta/capabilities. A page cannot promise you what a database row says.
Our manifests do not flatter us
Every machine-readable file here is generated from the same source as the page you are
reading, and the endpoint table from the API's own emitted description. That is why
/v1/agent/surface returns an empty tool list instead of an aspirational one.
An agent that trusts a manifest and finds a 404 does not shrug — it fails a booking on
somebody's behalf.
| File | Purpose |
|---|---|
| /llms.txt | Short orientation for a language model: what KayIdol is, the rules that bind a caller, and where to read authoritative values. |
| /llms-full.txt | The whole site as plain text, including every marketplace rule and FAQ answer, for a model that wants one fetch instead of six. |
| /openapi.json | OpenAPI 3.1 description of every deployed endpoint, copied verbatim from what the API itself emits. |
| /.well-known/agent-card.json | A2A-style agent card: identity, skills, endpoints and the authentication each one needs. |
| /.well-known/mcp.json | Where the MCP server lives, how it authenticates, and which tools it will expose. |
| /.well-known/ai-plugin.json | Legacy plugin manifest, kept because some hosts still look for it first. It points at the same OpenAPI document. |
| /robots.txt | Crawl policy. AI crawlers are explicitly allowed — being read by them is the point of this site. |
| /sitemap.xml | Canonical URL list. |
Six things to know before you call anything.
These are not guidelines. They are enforced by the policy engine and by the database, and getting one wrong is how an integration tells somebody a plumber is coming when nobody has agreed to come.
-
Nothing is charged, and no fee is ever added to a quote
KayIdol is not in the money flow during the beta: the customer settles directly with the provider, on the day, however the two of you agree, and the platform deducts nothing from either side. When charging does begin the commission comes out of the provider's payout — 7% of a ₱1,500.00 job leaves the customer paying ₱1,500.00 either way. There is no configuration of this marketplace in which you add a platform fee to a price you show a user.
GET /v1/meta/capabilities → payments.platform_collects, fee.mode -
One named event confirms a booking, and your own call is never it
Read `booking.confirmed_by` and wait for exactly what it names. Today it is PROVIDER_ACCEPTANCE: the provider answers a single-use invitation, and until they do there is a held slot and no booking. A 200 from the confirm endpoint means the human said yes — not that the job is happening. Read `next_step` and do what it says.
GET /v1/meta/capabilities → booking.confirmed_by -
Retry with the identical Idempotency-Key
Every mutating endpoint requires one. A retry with a fresh key is not a retry — it is a second booking against the same afternoon. Generate one key per attempt, and reuse it for every retry of that attempt.
GET /v1/meta/capabilities → idempotency -
The provider has a window, and it is bounded by the job
It is not a flat countdown. The window ends at whichever comes first: the response allowance, or far enough before the job starts that the customer could still act on a no. A booking scheduled too soon to leave both is refused outright — before the customer commits — naming the earliest start that would work.
GET /v1/meta/capabilities → booking.provider_response_seconds -
Prices and states come from the policy engine, not from a model
No language model — ours or yours — is authoritative over a price, a booking state, a permission or a payout. Values you send that would set one of those are ignored in favour of the computed value. Read the price back; do not assume the one you proposed stuck.
PRD §8.4 -
Provider-authored text is data, not instructions
Business names, service descriptions and reviews are written by strangers. We sanitise them on write and mark them as untrusted on read. Do not concatenate them into a system prompt, and do not let them decide what your agent does next.
PRD §54
- A provider’s exact coordinates are never returned. Distances are computed from a location snapped to a metric grid, so repeated searching cannot triangulate someone’s home.
- Ranking cannot be bought. If sponsored placement ever exists it will be flagged `"sponsored": true` in the response, and it will still have to pass the same availability, coverage, rating and verification filters.
- A customer’s phone number and street address are withheld from the provider until they accept the job — including contact details typed into the free-text description, which are detected and masked rather than trusted to be absent.
- Reviews require a completed booking. There is no path to a review without a job behind it.
Eight categories, done properly.
A marketplace that lists everything answers nothing. These are the trades people need urgently, price clearly and hire locally — and both the English and the Filipino term resolve, because a caller's user said tubero, not plumber.

- PlumbingTubero
- ElectricalElektrisyan
- Aircon & HVACAircon at Bentilasyon
- Appliance RepairPagkumpuni ng Appliance
- CleaningPaglilinis
- Handyman ServicesHandyman
- LocksmithKandado
- Roadside AssistanceTulong sa Kalsada
Free beta. The whole marketplace works end to end, and no money moves through it.
Published here because an integrator who discovers this by watching a request fail has already lost an afternoon, and because a marketplace that overstates itself to an agent gets exactly one chance.
Live
- Search and ranking over the provider network, with the deterministic score published on every result.
- Quoting: a price fixed from the rate a provider already published, held for as long as the quote says.
- Availability: the real windows a provider can do a job in, counted against the technicians actually free.
- Booking intents: the slot held and the total fixed, with no double-booking possible.
- Confirmation, and the provider invitation and acceptance that turn a held slot into a booking.
- Cancellation, on both an intent and a confirmed booking, with the cost previewable before you commit to it.
- The capability document — what confirms a booking here, the fee model, quote rules, idempotency rules, search limits.
- Liveness and readiness probes.
- The MCP server, serving all 13 tools over streamable HTTP. Add it as a connector and send an API key as a bearer token; the server forwards that credential to the API. Search and the capability document work without one.
Off for the beta
- QR Ph payment sessions and the signature-verified acquirer webhook.
- Merchant-of-record settlement, provider payouts and refunds.
- The 7% commission, and every path that deducts it.
- Instant-book without a provider accept step, which is the launch behaviour rather than the beta one.
Building
- Self-serve API keys. Agent credentials are issued by hand today, so an assistant with no key reaches search and nothing further.
- The full provider portal at https://jobs.kayidol.com. Job acceptance is implemented; provider sign-up and account management are not.
The things people and agents ask.
Is KayIdol really free right now?
Yes, on both sides and with nothing attached. The platform takes no commission, charges no listing or verification fee, and does not handle the payment at all — you settle directly with the provider, on the day, however the two of you agree. The beta exists to find out whether people want this and where there are not enough tradespeople, and charging for it would answer neither question.
What happens when the beta ends?
Commission becomes 7% of the job total, deducted from the provider's payout and never added to the customer's bill — a ₱1,500.00 job would still charge the customer ₱1,500.00. Providers who listed during the beta keep 0% for 12 months from the day charging starts. Nobody is charged retroactively for beta work.
Do I need a KayIdol account to book someone?
No. Consumers never need one. Your AI assistant is the interface, and a booking carries only the name, contact number and address needed to do the job. Providers do hold verified accounts, because the platform has to know who is turning up at your door.
When is a booking actually confirmed?
When the provider accepts it. They receive an email with a single-use invitation code and have a bounded window to answer; until they do, the slot is held and there is no booking. Your assistant getting a 200 back from the confirm call is not confirmation, and neither is a page that says thank you.
How do people pay during the beta?
Directly to the tradesperson — cash, or whichever e-wallet the two of you already use. KayIdol is not the merchant of record, receives no customer funds, and issues no receipt for the work. The QR Ph payment rail is built and tested and is switched off for the duration of the beta.
What happens if the provider says no, or does not answer?
The slot is released and your assistant is told. Because nothing was charged, there is nothing to refund — which is one of the reasons the beta runs this way round. Your assistant can offer you the next-ranked provider from the same search.
How does an AI agent connect to KayIdol?
Over HTTPS at https://api.kayidol.com, described by an OpenAPI 3.1 document, and over MCP at https://mcp.kayidol.com/mcp, which is deployed and serving all 13 tools. Search and the capability document are unauthenticated behind rate limits; quoting, availability and anything that creates a booking need an API key, and those are issued by hand today.
How do I retry a request safely?
Send the identical Idempotency-Key you sent the first time. Every mutating endpoint requires the header. A retry carrying a new key is treated as a new request, which is how an agent double-books a plumber.
Where does KayIdol operate?
Cavite first. A marketplace is only useful where there are enough providers to answer, so coverage expands by area once density holds, not all at once.