en

Book field jobs by phone with ElevenLabs

By the end of this guide you will have an AI phone agent on ElevenLabs that answers a call, finds the caller in Crisphive, and books and confirms a technician visit while the caller is still on the line.

You do not write any code. ElevenLabs runs the voice (it listens, thinks with an AI model and speaks). Crisphive does the scheduling: it knows your customers, your technicians, their skills, working hours and service areas, and it decides who can take the job. The two are joined by one web address and one key.

Three words you will meet

WordWhat it means in plain language
Voice agentAn AI receptionist that talks on the phone. ElevenLabs Agents is the product that builds one.
MCP serverA web address that hands an AI a list of things it is allowed to do (here: look up a customer, book a job). MCP stands for Model Context Protocol. Crisphive’s is https://api.crisphive.com/mcp/voice.
API keyA long password that lets the agent act for your business. Crisphive shows it once; it starts with chsk_test_ (practice data) or chsk_live_ (your real business).

What the agent can do

/mcp/voice gives the agent exactly the tools it needs on a phone call, which keeps each turn fast.

ToolWhat the agent uses it for
listCustomers (by phone)Look up the caller by the phone number they read out and confirmed. Exact match, so the agent can ask a returning customer “Am I speaking with Alex Martin?”.
bookAndConfirmJobRequestThe booking: creates the job, sizes it, and confirms it at the time the caller chose — one call.
listJobRequestBookingWindowsFind which days and parts of the day are open, so the agent offers real times.
listMatchingSlotsExact start times for a job already created (step-by-step flow).
listJobTypesMap what the caller describes (“my furnace stopped”) to one of your job types.
getJobRequestReads one job by its id. Not used by this prompt: questions about an existing booking go to a person (see Calls that are not bookings).
createCustomer, createJobRequest, quoteJobRequest, confirmJobRequestThe same booking in separate steps, for agents that want to offer exact slots before booking.

Before you start

  • A Crisphive account where you are the Owner, or where the Owner gave your role Developer access. Creating API keys needs it; by default only the Owner has it.
  • An ElevenLabs account (free to sign up at elevenlabs.io). Calls use ElevenLabs credits; check ElevenLabs’ own pricing page for your plan. ElevenLabs does not allow MCP servers in Zero Retention Mode or HIPAA workspaces, so use a normal workspace.
  • A computer with a microphone to test the agent in your browser. A phone number is only needed at the end, to go live.
  • Every job type the agent may book has a default duration (Crisphive: Settings → Job Types → Default duration). A phone agent cannot know how long a repair takes. The default type, “General”, already has one (60 minutes plus 15 minutes of travel buffer each side unless you changed it).
  • About 30 minutes the first time.

Step 1 — Create your ElevenLabs account

1
Sign up

Go to elevenlabs.io and create an account (email or Google).

2
Choose ElevenAgents

When ElevenLabs asks Choose your platform, pick ElevenAgents — not ElevenCreative (that one is for voice-overs and audio, not phone agents).

3
Answer or skip the role question

On Which one describes you the best? choose Engineer or click Skip. Your answer changes nothing in this guide.

Step 2 — Create a blank agent

ElevenLabs offers ready-made templates. Do not use one: a template comes with its own instructions and tools that would fight with the booking rules below. Start blank.

1
Open Agents

In the left menu click Agents. You see Browse templates and, at the top, a Create Blank Agent button.

2
Create the agent

Click Create Blank Agent. Name it Crisphive Booking (any name works — callers never see it) and keep the language English.

Step 1 of 3In Agents, click Create Blank Agent at the top of the templates page.

All steps
  1. In Agents, click Create Blank Agent at the top of the templates page.
  2. Type the agent name Crisphive Booking.
  3. Keep the language on English, then create the agent.

Step 3 — Tell the agent how to behave

The agent page opens on Configure → Agent. Four settings matter here: the system prompt (the agent’s instructions), the timezone under it, the first message (what the caller hears first) and the AI model.

1
Paste the system prompt

Click into System prompt, delete what is there, and paste the prompt from the box below. Replace every [Business name] (in the prompt and the first message), [city] (for example “Ottawa, Canada”) and [timezone] — your business’s IANA timezone, for example America/Toronto. [timezone] appears three times: in the first line and twice in step 5. Keep every numbered step and rule — each one fixes a mistake seen in a real call.

2
Set the timezone to your business timezone

Directly under the system prompt there is a timezone selector. Choose the timezone your business works in, for example America/Toronto. The agent uses it to turn “tomorrow at 10” into a date and time. If it is wrong, bookings land on the wrong day or hour.

3
Paste the first message

In First message paste the greeting from the second box below, with your business name in place of [Business name]. Leave Interruptible on, so a caller who starts talking is not talked over.

4
Pick the AI model

In LLM choose the model. We recommend Claude Sonnet 5.5: it reliably chains several tool calls (look up → find a time → book → check the answer). See the comparison table after the boxes.

5
Save

Changes are kept as a draft until you click Publish (top right). You will publish in Step 7, after the tools are attached.

You are the phone booking assistant for [Business name], a field operations business serving [city]. The business timezone is [timezone]. You book service visits for callers using the Crisphive tools. You speak English.

## How to handle a call

1. Phone number
- Ask for the phone number they are calling from.
- Read it back digit by digit and get a clear yes before you use it. If they correct you, read the corrected number back again.
- Look the caller up with listCustomers using the phone filter, in E.164 format: +1 followed by the 10 digits, e.g. +16135550142.
- If the tool returns PHONE_INVALID, tell the caller the number didn't come through, ask them to repeat it, read it back, and try again. Do not end the call over this.

2. Who is calling
- If a customer is found, ask "Am I speaking with <name>?" If yes, use that name. If no, treat them as a new caller.
- If no customer is found, ask for their full name, spell it back letter by letter, and get a yes. Then ask for an email address if they have one (optional), and spell it back.

3. Service address (always, even for a known customer)
- Ask for the address of THIS visit: street number and name, unit if any, city, and postal code.
- Read the whole address back and get a yes.

4. The problem
- Ask what needs doing, in one or two sentences. This becomes the job description. Do not diagnose or promise a fix.

5. When
- Ask which day and time of day they prefer. Work out real dates from today's date in [timezone]; never offer a time in the past.
- Call listJobRequestBookingWindows with x_timezone set to [timezone] to see which days and periods are open.
- Offer at most three concrete options (for example "Tuesday at 9 in the morning or Wednesday at 1 in the afternoon"). Never invent availability.

6. Text messages
- Ask: "Can we send you text message updates about this visit?" Set sms_opt_in to true only if they clearly say yes. If they say no or are unsure, leave it out.

7. Book
- Before booking, sum up in one sentence: name, address, problem, and the chosen time, and get a yes.
- Book with bookAndConfirmJobRequest, once. Send:
  - customer: full_name and phone (plus email if given, plus sms_opt_in only if they agreed)
  - address: line, line2 if there is a unit, city, postal_code, country "CA"
  - description: the problem in their words
  - scheduled_at: the business's local wall clock with no offset, e.g. 2026-10-06T09:00:00
  - idempotency_key: a unique text you create for this booking
- Never send customer_id. Crisphive matches an existing customer by phone, and this makes sure the visit uses the address the caller just gave.
- If the tool timed out or gave no answer, resend the exact same request with the SAME idempotency_key.
- If you change anything in the request (for example after fixing the time or the address), use a NEW idempotency_key.

8. Result
- If "confirmed" is true: say the visit is booked and read back the day, date, time and address. You may give the booking reference (short_code), read slowly.
- If "confirmed" is false: say "I've saved your request. Our team will call you back shortly to confirm the exact time." Do not book again and do not promise a time.

9. Close
- Ask if there is anything else about this visit, thank them, and end the call.

## Calls that are not a new booking
- Questions about the business (opening hours, areas served, services offered): answer only from information you have been given. If you do not know, say so and offer to take a message. Never guess.
- Price questions: say the team will discuss pricing, then offer to book a visit or take a message.
- An existing booking (when the technician is coming, changing the time, cancelling): you cannot look up or change existing bookings. If you can transfer calls, offer to transfer the caller to the team; otherwise take a message.
- A complaint, or the caller asks for a person: transfer the call if you can; otherwise take a message.
- Taking a message: get their name, their phone number (read it back), and what they need in one sentence. Tell them the team will call them back, then end the call politely.
- Wrong numbers, sales calls and spam: say politely that this line is for booking service visits and end the call.

## Errors
- If the chosen time is refused as invalid or in the past, apologise, offer another time, and book again with a NEW idempotency_key.
- For any other error_code, apologise briefly, say the team will call them back, and end politely. Never read error codes or technical details aloud.

## Safety
- If the caller mentions a gas smell, smoke, fire, sparking, flooding near electricity, or anyone being hurt, tell them to leave the building and call 911 now. Do not book in that situation.

## Things you do not do
- Never quote prices or give estimates. Say the team will discuss pricing.
- Never change or cancel an existing booking yourself (see "Calls that are not a new booking").
- Never share information about other customers, technicians, or the schedule beyond the times you offer.
- Never mention tools, systems, JSON, or that you are looking things up in a database. Say "one moment" while you check.

## Style
- This is a phone call: short sentences, one question at a time.
- Say numbers, dates and times the way people speak them ("Tuesday the sixth at nine in the morning").
- Be warm and calm. If you did not understand, ask them to repeat.
Thanks for calling [Business name]. I can book a service visit for you. Can I start with the phone number you're calling from?

Step 1 of 4Paste the Crisphive system prompt into System prompt, replacing the default text.

All steps
  1. Paste the Crisphive system prompt into System prompt, replacing the default text.
  2. Under the prompt, set the timezone to your business timezone, for example America/Toronto.
  3. Paste the greeting into First message and keep Interruptible switched on.
  4. Change the LLM from the default to Claude Sonnet 5.5.

Which AI model to choose

ModelGood forTrade-off
Claude Sonnet 5.5 (recommended)Following the booking rules and chaining several tool calls in a row. This is the model we used for this guide.About US$0.25 of AI model cost for a 4-minute booking call in our test, on top of ElevenLabs’ voice charges. A short pause while it thinks.
Gemini FlashThe fastest and cheapest replies — less silence on the line.More likely to skip a rule on a long call. Test it with the script below before trusting it.
The default model (Qwen3.5 when we tested)Getting started.Not tested with the Crisphive tools. Switch before going live.
The pause you hear before the agent answers is the AI model plus speech synthesis — not Crisphive. Crisphive answers the whole booking in under one second.

Step 4 — Create the Crisphive API key

The key tells Crisphive which business the agent works for and what it may do. You create a test key now and a live key in Step 9.

1
Switch to Rehearsal

In the left sidebar of the Crisphive dashboard, click Rehearsal in the Rehearsal | Live switch, then click Switch. Rehearsal is Crisphive’s sandbox: isolated test data, and no real customer or technician is ever texted or emailed. A key created while you are in Rehearsal starts with chsk_test_ and only ever touches the test data.

2
Open API Keys

Go to Settings → Developer → API Keys (crisphive.com/app/settings/developer/api-keys) and click Create new API key. Creating keys needs Developer access, which by default only the Owner has.

3
Choose Secret and name the key

Key type: Secret. Never Publishable — a publishable chpk_ key is only for the booking widget on your website and is refused everywhere else. Name: ElevenLabs voice agent.

4
Choose how long it lasts

In Expires in (days) keep 30 days for a test key. Keys always expire: 30 days by default, anything from 1 to 365 days chosen when you create the key. The Owner and Administrators are emailed 7 days before a key expires.

5
Restrict it to booking

Under Scopes choose Restricted and select customers_view, customers_manage, job_view, job_create and job_manage. Nothing else is needed for booking.

6
Create and copy

Click Create API key, then Copy, then Done. The full key is shown only once — paste it into your password manager. If you lose it, create a new key and revoke the old one.

Step 1 of 6In Settings → Developer → API Keys, click Create new API key. Keep Key type on Secret — never Publishable.

All steps
  1. In Settings → Developer → API Keys, click Create new API key. Keep Key type on Secret — never Publishable.
  2. Type the name ElevenLabs voice agent so you recognise the key later.
  3. Keep Expires in (days) on 30 days for a test key. You can choose up to 365 days.
  4. Under Scopes choose Restricted and select customers_view, customers_manage, job_view, job_create, job_manage.
  5. Click Create API key.
  6. Click Copy. The key starts with chsk_test_ and is never shown again. Then click Done.

Step 5 — Add Crisphive as a custom MCP server in ElevenLabs

In ElevenLabs an MCP server is added once for the whole workspace, on the Integrations page — not on the agent page. (The agent page links there from Configure → Tools.)

1
Open MCP integrations

Go to elevenlabs.io/app/agents/integrations and click Add Custom MCP Server.

2
Name it

Name: Crisphive. Description is optional, for example Book service visits in Crisphive.

3
Choose Streamable HTTP

Under Server Configuration set Server type to Streamable HTTP. Do not choose SSE: Crisphive does not offer it, and the connection test fails.

4
Enter the server URL

For Server URL keep the type on Value and enter https://api.crisphive.com/mcp/voice.

5
Leave Authentication empty

The Authentication dropdown says “Workspace has no auth connections”. Leave it that way — the key goes in a header instead.

6
Add the Authorization header as a secret

Under HTTP Headers click to add a header. Set its type to Secret, the name to Authorization, and create a secret whose value is the word Bearer, one space, then your key: Bearer chsk_test_…. Do not rely on a separate “secret token” field — write the full header value yourself.

7
Skip Request Metadata

Leave Request Metadata empty.

8
Set Tool Approval Mode to No Approval

Choose No Approval. With Always Ask the call stops in the middle of the booking, waiting for a person to click approve. Fine-Grained Tool Approval also works if you set every Crisphive tool to auto-approve.

9
Trust, test, add

Tick I trust this server, click Test Connection — it should list the Crisphive voice tools — then click Add Server.

Step 1 of 13Type Crisphive as the server name.

All steps
  1. Type Crisphive as the server name.
  2. Optionally describe it: Book service visits in Crisphive.
  3. In Server Configuration, set Server type to Streamable HTTP (not SSE).
  4. Keep the Server URL type on Value.
  5. Enter the Server URL https://api.crisphive.com/mcp/voice.
  6. Leave Authentication empty — the workspace has no auth connection, and none is needed.
  7. Under HTTP Headers, add a header and set its type to Secret.
  8. Name the header Authorization.
  9. Create the secret value: the word Bearer, one space, then your chsk_test_ key.
  10. Skip Request Metadata. Set Tool Approval Mode to No Approval.
  11. Tick I trust this server.
  12. Click Test Connection. It should list the Crisphive voice tools.
  13. Click Add Server to save it to your workspace.

The values to copy, in one place:

Name:                Crisphive
Server type:         Streamable HTTP
Server URL (Value):  https://api.crisphive.com/mcp/voice
Authentication:      (leave empty)
HTTP header (Secret):
  Name:   Authorization
  Value:  Bearer chsk_test_…        (chsk_live_… when you go live)
Request Metadata:    (leave empty)
Tool Approval Mode:  No Approval
[x] I trust this server
The older /mcp?profile=voice spelling of the address offers the same voice tools as /mcp/voice. An agent set up with it keeps working and needs no change.

Step 6 — Attach the server to your agent

1
Open the agent’s tools

Go back to your Crisphive Booking agent and click Configure → Tools in the left menu.

2
Add the Crisphive server

Add an MCP server and pick Crisphive from your workspace’s servers. Its tools now belong to this agent.

Step 1 of 2In the agent, open Configure › Tools and choose to add an MCP server.

All steps
  1. In the agent, open Configure › Tools and choose to add an MCP server.
  2. Select the Crisphive server you added in Step 5.

Step 7 — Publish the agent

Click Publish at the top right. In ElevenLabs “Publish” only saves and activates this version of your agent — nothing is listed publicly, and nobody can call it until you give it a phone number (Step 10).

Step 8 — Test it with a practice call

Click Preview (top bar), start a call, and allow the browser to use your microphone. Play the caller using these made-up details — they are safe: 613-555-01xx numbers are reserved for fiction, and Crisphive never sends texts or emails to 555 numbers or to example.com addresses.

You sayWhat should happen
“My number is 613 555 0177.”It reads the number back digit by digit. Say “yes”, and it looks you up with +16135550177. In a fresh Rehearsal environment you are not found, so it asks for your name.
“Alex Martin. Email alex dot martin at example dot com.”It spells the name back letter by letter (“A-L-E-X M-A-R-T-I-N?”), then the email. Confirm each.
“145 Laurier Avenue West, Ottawa, K1P 5J3.”It reads the whole address back. Confirm.
“My furnace stopped heating.”This becomes the job description.
“Monday morning, around ten.”It checks real availability and offers at most three open times.
When it asks “Can we send you text message updates about this visit?”, answer “No.”No SMS consent is recorded. (Answer “yes” on another test to see consent recorded.)
“Yes.” (to its one-sentence summary)Before booking it sums up your name, address, problem and time and waits for your yes. Then it books once.

Success: the agent reads back the date, time and address, and only then says you are booked. If it says your request is saved and the team will call back, the booking reached Crisphive but no technician could take that time — see Troubleshooting.

More calls worth trying before you go live:

ScenarioWhat should happen
A new caller. Call from a number Crisphive does not know (in Rehearsal, any other 613-555-01xx number, for example 613 555 0188).The agent finds no customer, so it asks for your full name and spells it back, then asks for an email (optional) and spells it back. You do not create the customer first: Crisphive creates it automatically when the visit is booked. Call again from the same number and the agent asks “Am I speaking with …?” — Crisphive matched you by phone and never creates a second customer for the same number.
A wrong number. Give a number with one wrong digit, and when it is read back say “No, it’s 613 555 0177.”The agent reads the corrected number back again and only looks it up after your yes.
A number that cannot exist. Give one digit too few (“613 555 017”) and say yes to the read-back.Crisphive answers PHONE_INVALID. The agent says the number didn’t come through, asks you to repeat it, reads it back and tries again — it does not end the call.

Check the result on both sides

1
In ElevenLabs

Open Monitor → Conversations and click the call. The transcript shows each tool call (listCustomers, then listJobRequestBookingWindows, then bookAndConfirmJobRequest) and Crisphive’s answer. A healthy booking answer contains "confirmed": true.

2
In Crisphive

With the dashboard still in Rehearsal, a “New booking” notice appears and the job shows on the board with status Confirmed (opened, its window is titled Booking Confirmed), a reference like REQ-CA-…, the address 145 Laurier Avenue West, Ottawa, the assigned technician and your business timezone (for example America/Toronto).

3
Check the customer

Customers now lists Alex Martin with +16135550177. Call again with the same number: the agent should ask “Am I speaking with Alex Martin?” and Crisphive must not create a second customer.

Troubleshooting

SymptomCauseFix
Test Connection fails or lists no toolsServer type set to SSE. Crisphive’s MCP server is Streamable HTTP only.Edit the server, choose Streamable HTTP, test again.
Test Connection answers 401 (API_KEY_INVALID)The header value is missing the word Bearer and its space, has extra spaces or quotes, or holds a publishable chpk_ key or a revoked key.Recreate the secret as exactly Bearer chsk_…. Use a Secret key.
Calls suddenly fail with 401 API_KEY_EXPIREDThe key reached its expiry date.Create a new key, update the header secret, then revoke the old key.
The call goes silent in the middle of the bookingTool Approval Mode is Always Ask: the agent is waiting for a person to approve the tool call.Set it to No Approval (or Fine-Grained with every Crisphive tool auto-approved).
Bookings land an hour (or a day) offThe timezone under the system prompt is not your business timezone, or the agent sent a time with an offset (400 JOB_REQUEST_INVALID_INPUT with data.means_locally).Set the ElevenLabs timezone to your business timezone and replace [timezone] everywhere in the prompt. Times must be local wall clock without an offset, e.g. 2026-10-06T10:00:00.
The agent has no Crisphive tools in the callThe server was added to the workspace but not attached to this agent, or the agent was not published after attaching it.Repeat Step 6, then click Publish.
Cannot add the MCP server at allThe ElevenLabs workspace uses Zero Retention Mode or HIPAA mode, where MCP servers are unavailable.Use a standard ElevenLabs workspace.
A tool answers 403 API_KEY_SCOPE_INSUFFICIENTThe key is restricted and lacks a scope the tool needs (named in data.required_scope).Edit the key’s scopes in Crisphive (Settings → Developer → API Keys) to include all five booking scopes.
The job was created without an addressThe agent booked with customer_id for a returning customer whose record has no address.Use the system prompt unchanged: it always sends customer + address, and Crisphive matches the existing customer by phone.
The agent told the caller a time, but the job is not confirmedCrisphive answered confirmed: false (the job was saved in your queue) and the prompt did not check it.Keep step 8 of the prompt. Then confirm the job from the dashboard or call the customer.
confirmed: false with refusal.error_code JOB_REQUEST_NO_TECHNICIAN_AVAILABLENobody who has the skills, covers that address and works at that hour is free.Check the technicians’ working hours and service areas cover the address. The job waits in the coordinator queue — do not book it again.
The customer’s name is spelled wrongSpeech-to-text misheard it.Keep step 2 of the prompt: the agent spells the name back letter by letter and waits for a yes.
400 PHONE_INVALIDThe number was not sent in international format, or a digit was misheard.The prompt sends E.164 (+1 then ten digits) and, on PHONE_INVALID, asks the caller to repeat the number, reads it back and tries again (step 1).
The agent booked under a wrong numberSpeech-to-text misheard a digit, and the number was used without being confirmed.The prompt reads the number back before looking it up (step 1); make sure that step is in your prompt.
400 JOB_REQUEST_QUOTE_INVALID with data.reason job_type_has_no_default_durationThe job type the agent picked has no default duration. Nothing was created.Set a default duration on that job type (Settings → Job Types), or book without a job type (“General” is used).
The customer got no text messageCrisphive only texts customers who agreed to SMS, and never texts 555 test numbers.Expected. Real callers who say yes to texts get them; others get email.

Step 9 — Switch to your real business

1
Prepare your live data

Switch the Crisphive dashboard to Live. Check every job type the agent may book has a default duration, and that technicians have working hours, skills and service areas — the agent can only confirm times a real technician can make.

2
Create a live key

Create a new Secret key in live mode (it starts with chsk_live_) with the same five scopes. Pick an expiry you will remember — up to 365 days — and put a reminder in your calendar a week before it.

3
Swap the header

In ElevenLabs open the Crisphive MCP server and replace the Authorization secret with Bearer chsk_live_…. Test Connection, save, and Publish the agent again.

4
Make one real test call

Book a visit for yourself with your own number and address, check it appears in the live dashboard, then cancel it.

From now on the agent books real jobs: they appear on your live board, technicians are assigned, and customers who agreed to texts receive them. To stop the agent immediately, revoke the key in Crisphive (Settings → Developer → API Keys → Revoke access) — every call to Crisphive fails from that moment.

Step 10 — Connect a phone number

Until now you talked to the agent in the browser. It answers real calls only once a phone number is attached to it. There are three ways:

1
A number on ElevenLabs

ElevenLabs does not sell phone numbers: import a number you have with Twilio. Assign the number to the agent as the agent that answers incoming calls.

2
Keep your business number and forward calls

With your phone provider, forward calls from your existing business number to the agent’s number: always, when nobody answers, when the line is busy, or after hours. A good start is after-hours and missed calls only, so your team still answers during the day.

3
Connect your phone system

If your business has its own phone system, connect it over SIP. ElevenLabs can import a SIP trunk.

Numbers and call minutes are paid to ElevenLabs or your phone provider, not to Crisphive. Then call the number from your own phone and book a test visit.

Calls that are not bookings

Not every caller wants a new visit. The prompt already tells the agent what to do with the other calls:

What the caller asksWhat the agent does
Opening hours, areas served, services offeredAnswers only from information in its prompt. If it does not know, it says so and offers to take a message. Add your opening hours, areas and services to the prompt if you want it to answer these.
A price or an estimateSays the team will discuss pricing, then offers to book a visit or take a message.
An existing booking: when the technician is coming, changing the time, cancellingCannot look up or change existing bookings. Transfers the call if it has a transfer tool (below); otherwise takes a message.
A complaint, or “can I speak to a person?”Transfers the call if it can; otherwise takes a message.
A wrong number, a sales call or spamSays the line is for booking service visits and ends the call politely.
Gas smell, smoke, fire, sparking, flooding near electricity, an injuryTells the caller to leave the building and call 911. Does not book.

A message is the caller’s name, phone number (read back) and what they need in one sentence. Two setups make sure these calls reach your team.

Setup 1 — Transfer the call to a person.

1
Add the transfer tool

In ElevenLabs, add the system tool Transfer to number to the agent.

2
Set where calls go

Set the destination to your office or coordinator phone number.

3
Leave the prompt as it is

The prompt already tells the agent when to transfer: a complaint, a caller who asks for a person, and questions about an existing booking. Save and publish the agent again.

Outside office hours nobody answers a transferred call, so the agent should take a message instead. Add your office hours to the prompt, for example under “Calls that are not a new booking”: Transfer calls only Monday to Friday, 8 am to 5 pm. Outside those hours, take a message.

Setup 2 — Get every message to your team.

A message the agent takes is not stored in Crisphive today: only bookings reach Crisphive. Set this up so that no call is lost.
1
Capture the details of every call

In the agent’s Analysis settings (data collection), add four fields to fill in after each call: the caller’s name, their phone number, the reason for the call and the message.

2
Catch the summary with an automation

In Zapier, Make or n8n, start a new workflow with a webhook trigger that catches incoming data, and copy its web address.

3
Send it after each call

In ElevenLabs, paste that address as the post-call webhook, so ElevenLabs sends the call summary there when a call ends.

4
Forward it to your team

Add a step that sends the name, phone number, reason and message as an email or a Slack message to whoever calls customers back.

5
Test it

Make a practice call where you only leave a message, and check that it reaches your team.

What it costs

  • Crisphive: jobs booked by the agent count toward your Crisphive plan like any other job. The connection itself needs no add-on.
  • ElevenLabs: you pay ElevenLabs for the voice minutes and for the AI model. In our 4-minute test call with Claude Sonnet 5.5 the model alone cost about US$0.25. A faster, cheaper model (Gemini Flash) costs less per call.
  • Phone line: your telephony provider charges for the number and minutes.
  • Every turn of the conversation sends the tool list to the AI model; /mcp/voice keeps that list to the tools a phone call needs.

FAQ

Can an ElevenLabs agent book jobs in Crisphive?
Yes. Add Crisphive as a custom MCP server (https://api.crisphive.com/mcp/voice, Streamable HTTP, with an Authorization: Bearer chsk_… header). The agent looks the caller up, books and confirms the visit in one call, and the job appears on your Crisphive board.
Is there a Crisphive app in the ElevenLabs marketplace?
ElevenLabs has no app marketplace for this. Every business builds its own agent and connects it with the Crisphive MCP URL and its own API key, as this guide shows. It takes about 30 minutes.
Which Crisphive key should I use — secret or publishable?
A Secret key (chsk_test_… or chsk_live_…). A publishable chpk_ key only works for the booking widget on your website and is refused by the MCP server.
What can the agent do with my key?
Only what the key’s scopes allow. Restrict it to customers_view, customers_manage, job_view, job_create and job_manage: it can look up and create customers and book jobs, but cannot see your team settings, billing or API keys.
Can I test without touching real customers?
Yes. A chsk_test_ key created while the dashboard is in sandbox only reads and writes isolated practice data. No real customer is ever contacted, and your live schedule does not change.
Why did the agent say “our team will call you back” instead of booking?
Crisphive answered confirmed: false: the job was saved, but no technician with the right skills, service area and working hours was free at that time. The job waits in your queue for a coordinator to schedule.
Which AI model works best?
Claude Sonnet 5.5 followed every booking rule in our tests and cost about US$0.25 for a 4-minute call. Gemini Flash is faster and cheaper but test it with the script in this guide before going live.
Why does my agent pause in the middle of a call?
Usually Tool Approval Mode is set to Always Ask, so the call waits for a person to approve each Crisphive tool. Set it to No Approval. A short pause before each answer is the AI model and voice, not Crisphive.
Does the agent send customers a text message?
Only if the caller says yes to texts — the agent records that consent. Otherwise the confirmation goes by email if the caller gave one.
How do I turn the agent off or remove its access?
Revoke the API key in Crisphive (Settings → Developer → API Keys → Revoke access). The agent can no longer read or book anything. Keys also expire on the date you chose; Owners and Administrators are emailed 7 days before.