AI receptionists

Your AI receptionist should know where you work before it books

AI phone and chat agents answer around the clock and book what they are asked to book. Without your real service area, that includes jobs in towns you stopped covering, streets just past your line, and work the nearest branch does not do. MapLogics gives the agent one question to ask mid-conversation and an answer it can act on.

How an AI receptionist ends up booking jobs you cannot serve

A ZIP list pasted into the prompt
It was right the day somebody typed it. Then a branch took over two towns, a crew left, and the prompt still says yes to all of them.
Coverage that stops at the ZIP code edge
Half a ZIP code is often the honest answer, and a list of ZIP codes cannot say it. The agent either turns away a customer on a street your vans drive down or books one an hour past your line.
The right town, the wrong branch
A booking that lands on a location that does not do that kind of work is a callback, a reschedule and a customer who heard a promise.

What it can ask in the middle of a call

The agent sends the address the caller just gave. MapLogics places it on the map, tests it against the territories and rules you published, and answers with whether you serve it (serviceable), the territory it falls in, the location that takes the job, and a short message written for a person. The answer comes from your configuration, not from a model, so the same address gets the same answer on the phone, on your website and in your CRM.

When you move a ZIP code between branches or stop covering a town, you publish the change once in MapLogics and the receptionist follows it on the next call. Nobody edits a prompt.

Two ways to connect it

If your platform supports MCP

Add MapLogics as an MCP server and turn on the check_address tool. The tool's description and inputs come from our server, so you only add the instructions further down. Most voice platforms send a fixed header rather than signing in, so use an API key with theresolve scope, created in the app under Settings, API keys.

MCP servertext

URL:     https://api.maplogics.com/mcp
Header:  Authorization: Bearer ml_live_...
Tool:    check_address

Everywhere else: one HTTP tool

If your platform lets the agent call a URL with JSON it fills in (often called a custom function, custom action, webhook tool or API request tool), define one tool with one parameter. The address goes on one line, the way a caller says it.

Tool definition (JSON schema)json

{
  "name": "check_service_area",
  "description": "Check whether we serve the caller's address and which location takes the job. Call it once you have the full street address, city, state and ZIP code, and before offering to book.",
  "parameters": {
    "type": "object",
    "properties": {
      "address": {
        "type": "string",
        "description": "The caller's full address on one line, for example \"2 E Main St, Richmond, VA 23219\"."
      }
    },
    "required": ["address"]
  }
}

The request it makeshttp

POST https://api.maplogics.com/v1/resolve
Authorization: Bearer ml_live_...
Content-Type: application/json

{ "address": "2 E Main St, Richmond, VA 23219", "trace": "none" }

What comes backjson

{
  "request_id": "req_9039f987",
  "status": "resolved",
  "serviceable": true,
  "reason_code": "PRIMARY_ELIGIBLE_TERRITORY",
  "message": "...",
  "territory": { "id": "trr_...", "name": "Richmond Central" },
  "location": { "id": "loc_...", "name": "Richmond Central" },
  "outputs": {}
}

"trace": "none" keeps the answer short, which suits a voice tool. Start with a test key (ml_test_...): it answers from your published configuration and is not counted in your usage.

Platforms and what they support

From each platform's public documentation as of October 2026. We have not tested these integrations and have no partnership with these companies; this is what their docs say you can set up yourself.

PlatformSupports MCPSupports custom HTTP tools
Retell AIYesYes
VapiYesYes
SynthflowYesYes
ElevenLabs AgentsYesYes
VoiceflowYesYes
Bland AINot in its docsYes
OpenAI Realtime APIYesFunction tools your own code runs

Receptionists built into field service software (ServiceTitan, Jobber, Housecall Pro, Workiz) use their own service area settings and do not take outside tools. GoHighLevel Voice AI supports custom actions, but we have not confirmed the request it sends, so check the result before relying on it.

What the agent should say

Served (serviceable: true)
Confirm you cover the area and book with the location the answer names.
Not served (serviceable: false)
Say so politely, read back the message, and do not book. A clear no on the first call is better than a cancelled job the next morning.
Unsure (serviceable: null)
The address could not be placed precisely enough, or two territories tie. That is not a no. Take a message and promise a callback, and do the same if the check fails or times out.

Paste this into the agent's instructions and adjust it to your business:

Agent instructionstext

Before offering to book, get the caller's full street address, city, state
and ZIP code, then call check_service_area.

If serviceable is true: tell the caller we cover their area and book the job
with the location the result names.

If serviceable is false: say politely that we do not serve that address, read
back the message from the result, and do not book.

If serviceable is null, or the check fails or times out: do not refuse. Say we
need to confirm coverage for their address, take their name, number and the
job, and promise that someone will call them back.

What it does not do

It does not schedule or check anyone's calendar. It answers whether you serve the address and who takes it; the booking stays with your receptionist and your field service software.

It does not keep the caller's address. Each check is recorded as a decision, with the territory and location it went to, so you can see what the agent asked, but the address itself is used to decide and then dropped. There is no monthly cap on checks on any plan.